spring学习之Bean
Bean的实例化:
- 构造器实例化
- 静态工厂实例化
- 实例工厂实例化
Bean的作用域(常用两种):
- singleton:spring容器只会存在一个共享的Bean实例,只要id与该id属性相匹配,就会返回同一个Bean实例。适用于无会话状态(如Dao组件、Service组件)。
- prototype:Spring容器会为每个对该Bean的请求都创建一个新的实例,适用于需要保持会话状态的Bean。
Bean的生命周期:
Bean的装配(依赖关系注入)方式:
- 基于XML的装配
- 设值注入:<property>要求Bean类提供一个默认无参构造方法;并且必须腰围需要注入的属性提供setter方法。
- 构造注入:<constructor-arg>来定义构造方法的参数,可以使用其value属性来设置改参数的值。
- 基于Annotation(注解)的装配:
- @component:泛化表示一个Bean(可以代替2,3,4,但是用2,3,4,更准确)
- @Repository:用于数据访问层(Dao层)的表示
- @Service:用于业务层(Service层)
- @Controller:用在控制层(Controller层)
- @Autowired:用于对Bean的属性变量、属性的setter方法及构造方法进行标注,配合对应注解完成Bean的自动装配,默认按照Bean类型装配
- @Resource:和Autowired作用一样,但是它默认按照Bean实例名称来进行装配。有name(解析为Bean实例名称)和type(Bean实例类型)两个重要属性。
- 自动装配:@