一、
Spring启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成生成一份对应的Bean配置注册表,然后根据这张注册表实例化Bean,装配好Bean之间的依赖关系
二、Bean的配置信息包括4个方面
Bean的实现类
Bean的属性信息:如数据源
Bean的依赖关系
Bean的行为配置:如生命周期
三、配置方法有xml、注解、java、Groovy
四、Sping支持三种依赖注入方式属性注入与够造函数注入还有工厂(需要额外的类和代码)
属性注入:
通过SetXXX()方法,灵活性高
要求提供一个默认的构造函数
Spring先调用Bean的默认构造函数实例化Bean,然后通过反射的方式调用set
构造函数注入:
保证属性在Bean实例化后就可以使用
五、引用其他Bean
<ref>元素有3个属性
bean:引用同一容器或父容器中的Bean
local:只能访问同一配置文件中的Bean
parent:引用父容器中的Bean
六、内部Bean,类似内部类
七、null值
<property name = "brand"><value></value></property>
为brand属性注入一个null值,不会成功,Spring为将<value></value>解析为空字符串,要用<null/>
<property name = "brand"><null/></property>
八、Spring为List、Set、Map、Properties(map的特例,键与值必须是字符串)提供了专属的配置标签。
还可以通过util配置结合类型的Bean
九、简化配置,采用p命名空间
十、方法注入
lookup注入
Spring IoC容器拥有复写Bean方法的能力,为Bean动态粗昂见子类或实现类
方法替换
十一、Bean之间的关系
继承、依赖depends-on、引用
十二、Bean作用域
singleton(默认):容器中只存在一个Bean实例
prototype:每次从容器中嗲用Bean时,都返回一个新的实例
request:每次Http请求都会创建一个新的Bean
session:同一个Http Session共享一个Bean
globalSession:同一个全局Session共享一个Bean
十三、基于注解配置
1.Spring提供的4个注解
@Compoment总体
下面三个是对其的细化
@Repository:用于对DAO实现类进行标注
@Service:用于对Service实现类进行标注
@Controller:用于对Controller实现类进行标注
2.Spring提供了一个context命名空间,提供了通过扫描类包
3.自动装配Bean
使用@Autowired进行自动注入
如果容器中没有和标注变量类型匹配的Bean,那么Spring容器启动时将报NoSuchBeanDefinitionException异常,通过required = false进行标注
@Qualifier指定注入的Bean的名称
@Lazy延迟注入