20使用限定符和类id
21java标准解决方案
/@Qualifier(“userServiceNormal”)
@Autowired/
@Resource(name = “userServiceNormal”)//java的JDK的自带解决方案
22处理分层架构
Web------service------dao-----data
AppConfig的扫描会扫描当前包及一下
UserController(WEB层)调用service层的接口,web层用@Qualifier(“userServiceNormal”)注明使用的哪个实现类,service层再同样的调用dao层的接口,实现dao层的方法
23设置组件扫描的基础包
AppConfig的3种设置方式
24通过xml启用组件扫描
@ContextConfiguration(“classpath:applicationContext.xml”)
用xml文件替换AppConfig
25警告信息
26第二张总结
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190619170705498.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMjkzNzMx,size_16,color_FFFFFF,t_70)
27第三章
添加第三方配置
28配置bean对象
在AppConfig中创建第三方的对象
29通过构造函数依赖注入
@Bean拦截所有创建的对象,查看是否创建
30在@Bean中使用参数
可以在已经创建的@Bean的方法里直接添加已经存在的对象
31通过settter方法注入
通过setter方法设置对象
32处理自动装配的歧义性
同样的三种方式辨别@Qualifier、id名、@Bean取名字
33第三章总结
34第四章总结XML装配
35创建xml配置规范
配置名约定俗成
36定义一个Bean
Xml文件自动创建Bean
37第二个Bean
Xml文件中给对象bean设置名字
38使用单元测试
选择同样的Bean使用的对象是一样的
39id和name
分号空格逗号
Name可以同时建立多个
<bean name ="compactDisc1 compactDisc12" class="demo.soundsystem.CompactDisc"/><!--分号空格逗号-->
同一个name的对象运行的地址都是同一个
40通过构造函数注入
Xml<constructor-arg ref="compactDisc1"/>
连接之前的类依赖注入
41c名称控件注入
42注入简单类型
可以使用c名称空间注入、name、type等
43注入list类型
设置类并且使用ref
44注入set类型
List
Set
使用的类装配不同,set会同化掉重复名的对象
45注入map集合类型注入
<entry key="m3" value-ref="music3"/>
46注入数组类型
<array>
<ref bean="music1"/>
同样的方法
47属性注入
Set方法自动注入属性
<property name="title" value="告白气球"/>
48属性注入列表和数组说明
<bean id="music1" class="demo.soundsystem.Music">
<property name="title" value="告白气球"/>
<property name="duration" value="251"/>
</bean>
<bean id="music2" class="demo.soundsystem.Music">
<property name="title" value="爱情废材"/>
<property name="duration" value="305"/>
</bean>
<bean id="compactDisc1" class="demo.soundsystem.CompactDisc">
<property name="title" value="周杰伦的床边故事"/>
<property name="artist" value="周杰伦"/>
<property name="tracks" >
<array>
<ref bean="music1"/>
<ref bean="music2"/>
</array>
</property>
</bean>
49属性注入对象引用
@Autowired
private CDPlayer cdPlayer;
@Test
public void test(){
cdPlayer.play();
}
50p名称空间注入
<bean id="music2" class="demo.soundsystem.Music"
p:title="爱情废材" p:duration="305"
>
集合数组没有pm名称
51util名称空间注入
可以处理集合数组类型
<util:list id="list1">
<array>
<ref bean="music1"/>
<ref bean="music2"/>
</array>
</util:list>
52第四章总结
Id和name区别
通过构造函数进行依赖注入
构造函数注入
1、constructor-arg元素
<constructor-arg name="title" type="java.lang.String" value="I Do"/>
2、C-名称空间
<bean id="compactDisc2" class="demo.soundsystem.CompactDisc"
c:title="周杰伦的床边故事"
c:artist="周杰伦"
/>
集合注入
List、Set、Map、数组
<array>
<ref bean="music1"/>
</array>
属性注入
1、property元素
2、P-名称空间
<bean id="compactDisc1" class="demo.soundsystem.CompactDisc" p:title="周杰伦的床边故事"
p:artist="周杰伦" p:tracks-ref="list1"
/>
3、Util名称空间
<util:list id="list1">
<ref bean="music1"/>
<ref bean="music2"/>
</util:list>
三种装配方式
1、自动装配
2、Java装配
3、XML装配
53第五章
高级装配
54Spring中的单例bean
Scope=singleton
无论我们是否主动获取bean对象,Spring上下文一定会自动创建对象
无论我们获取多少次,拿到的都是同一个对象
无论我们注入多少次,拿到的都是同一个对象
Scope=prototype
无论我们是否主动获取bean对象,Spring上下文不会自动创建对象
无论我们获取多少次,拿到的都是不同个对象
无论我们注入多少次,拿到的都是不同个对象
55bean的作用域
Scope四个类型
56自动定义bean的作用域
57javaconfig中定义bean的作用域
@Configuration
public class Appconfig {
@Bean
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public Netopad3 netopad3(){
return new Netopad3();
}
}
58延迟加载
在获取对象时加载对象
SCOPE_PROTOTYPE默认按需加载
59对象的初始化和销毁
60工厂方法创建对象
<!--静态工厂-->
<bean id="person1" class="demo.PersonFactory" factory-method="createPerson"/>
<!--实例工厂-->
<bean id="personFactory" class="demo.PersonFactory"/>
<bean id="person2" factory-bean="personFactory" factory-method="createPerson2"/>
61第五章总结
作用域配置
延迟加载
初始化方法和销毁方法
工厂
引用
spring学习教程
spring详解
https://www.cnblogs.com/wmyskxz/p/8824597.html