我是 来自 西安 的 java 爱好者 小封
Full-stack : 全栈 开发 : 提供了javaEE的三层的 解决方案
表现层 : SpringMVC 服务层 :spring 持久层 :Spring JDBCTemplate SpringDataOIC 控制反转 : 把 对象的 创建 叫给Spring 做 控制反转 把 对象的 创建 叫给Spring 做 : 然后逻辑层 里 就会 使用 ====== 解耦 了 /
体系结构 :2个 核心 IOC 与 AOP 集成 底层:Core —IOC AOP、 DAO ,ROM J,avaEEweb spJE
========= 07编写jdbc的工程代码用于分析程序的耦合 ============= 面向对象 的开闭 原则 : 程序的修改是 关闭的 程序的扩展的开放 需求 : 项目经理 : 要换的 不同的 使用 比如他爱用的是 springTemplate 的 ( 效率低 ) 用了 spring 解决的方案的 : 小改 到 xml 配置文件 即可
反射+ 配置文件 xml 与注解 —— factory工厂(读取 配置: 通过反射 创建对象) 思路 : 解决 业务层 与 持久层 的 耦合 //通过 key 获取全类名 没有明确的 对象 是 :Object 调用配置 4: 在需要实例的地方 使用 工厂创建对象
BeanFactory : 用的时候 在实现 : ApplicationContext 作为子接口 实现 具体实现的 就会直接创建 的 :
跟着服务器 走的 类路径 也就是程序构成 的类文件 走的 ==== 常用 日常开发 最 扩展的 的方式
本地的 硬盘里的======= 系统 文件的里的xml 的内容来解析的
常用的是 入参的是 字符串 : 通用 还有通过 getClass()来过去 仅有一个的情况下才可以 否则有bug :
=============
1: maven 的导入坐标 : spring5 的版本 :spring -text ---- 这里有一大堆 :aop benas 2: 编写Dao 的接口 (或其实现类 ***** 但是有MyBatis ====代理就行) 或者再来一套 :UserTemplate 的实现类 3: xml 配置文件 : -----bean id =“方法名” class =“全类名” : 4: 测试类 里要进行的是 : ClassPathXmlApplicationContext:类路径配置主要是id 的唯一的标识 的 就是 不得重复是的 ; bean : 无参构造
用无参构造方法 : 属性 : id 唯一来确定找到该对象 class : 该累的 字节码 权限定类名 scope : 对象的作用域 : ---- :默认时singleton 单例 ---- :prototype : 多例 我们就在java里写的 下面暂时不用 不常用 3个常用域 ---- :request ---- :session ---- : global session
1 单例与多例:
property : 多例 2个域 : 相当于 调用的
生命周期的 2个 属性 : init -Method : 对象创建的 时执行 destroy : 在对象被 销毁之前执行 已经创建 为什么没有销毁 没有来得及 .PNG 要关闭 需要父类转子类
2:****静态方法 :
<bean id="accountService" class="com.fhw.factory.StaticFactory" factory-method="createAccountService"></bean>3:实现类的方法
<!-- 此种方式是: 先把工厂的创建交给 spring 来管理。 然后在使用工厂的 bean 来调用里面的方法 factory-bean 属性: 用于指定实例工厂 bean 的 id。 factory-method 属性:用于指定实例工厂中创建对象的方法。 --> <bean id="instancFactory" class="com.fhw.factory.InstanceFactory"></bean> <bean id="accountService" factory-bean="instancFactory" factory-method="createAccountService"> </bean>pojo 类中 的 set 方法
<!-- 通过配置文件给 bean 中的属性传值:使用 set 方法的方式 涉及的标签: property 属性: name:找的是类中 set 方法后面的部分 ref:给属性赋值是其他 bean 类型的 value:给属性赋值是基本数据类型和 string 类型的 实际开发中,此种方式用的较多。 --> <bean id="accountService" class="com.fhw.service.impl.AccountServiceImpl"> <property name="name" value="test"></property> <property name="age" value="21"></property> <property name="birthday" ref="now"></property> </bean> <bean id="now" class="java.util.Date"></bean>p:成员属性名 来注入数据 ====================--------
配置文件代码: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="accountService" class="com.fhw.service.impl.AccountServiceImpl4" p:name="test" p:age="21" p:birthday-ref="now"/> </beans>是给类中的集合成员传值,它用的也是set方法注入的方式,只不过变量的数据类型都是集合。 我们这里介绍注入数组
以类 为单位 的注入 用类中的构造函数,给成员变量赋值。注意,赋值的操作不是我们自己做的,而是通过配置 的方式,让 spring 框架来为我们注入
数组 与 各种 集合 都用一遍 public class AccountServiceImpl implements IAccountService { private String[] myStrs; private List<String> myList; private Set<String> mySet; private Map<String,String> myMap; private Properties myProps; public void setMyStrs(String[] myStrs) { this.myStrs = myStrs; } public void setMyList(List<String> myList) { this.myList = myList; } public void setMySet(Set<String> mySet) { this.mySet = mySet; } public void setMyMap(Map<String, String> myMap) { this.myMap = myMap; } public void setMyProps(Properties myProps) { this.myProps = myProps; } @Override public void saveAccount() { System.out.println(Arrays.toString(myStrs)); System.out.println(myList); System.out.println(mySet); System.out.println(myMap); System.out.println(myProps); } } <!-- 注入集合数据 List 结构的: array,list,set Map 结构的 map,entry,props,prop --> <bean id="accountService" class="com.fhw.service.impl.AccountServiceImpl"> <!-- 在注入集合数据时,只要结构相同,标签可以互换 --> <!-- 给数组注入数据 --> <property name="myStrs"> <set> <value>AAA</value> <value>BBB</value> <value>CCC</value> </set> </property> <!-- 注入 list 集合数据 --> <property name="myList"> <array> <value>AAA</value> <value>BBB</value> <value>CCC</value> </array> </property> <!-- 注入 set 集合数据 --> <property name="mySet"> <list> <value>AAA</value> <value>BBB</value> <value>CCC</value> </list> </property> <!-- 注入 Map 数据 --> <property name="myMap"> <props> <prop key="testA">aaa</prop> <prop key="testB">bbb</prop> </props> </property> <!-- 注入 properties 数据 -->