spring之IOC详解三注解注入
1.组件扫描
指定一个包路径,Spring会自动扫描该包及其子包所有组件类,当发现组件类定义前有特定的注解标记时,就将该组件纳
入到Spring容器。等价于原有XML配置中的<bean>定义功能。
组件扫描可以替代大量XML配置的<bean>定义。
2.如何使用
step1,在配置文件当中,添加<context:component-scan base-package=""/>
让容器扫描指定的包及其子包下面的类。
step2,在类前面添加@Component
注1:
默认情况下,bean的id是首字母小写之后的类名,如果想重新
命名id,可以使用@Component("")形式。
注2:
@Repository:用于持久层组件
@Service:用于业务层组件
@Controller:用于控制器组件
3.生命周期相关的几个标注
@PostConstruct 初始化方法@PreDestroy 销毁方法
4.作用域
@Scope("prototype")注: 缺省值是"singleton"
5.延迟加载(了解)
@Lazy(true)注: 缺省值是false。
在默认情况下,容器启动之后,会将所有作用域
为"singleton"的bean实例化。如果延迟加载,则不会将
这些bean实例化。
6.依赖注入相关的几个标注
@Autowired和@Qualifier@Autowired可以用于构造器注入,也可以用于set方式注入。
1)构造器注入
a. @Autowired加在构造器前面。b. @Qualifier加在参数前面,用于
指定要注入的bean的id。
注:
注入的对象单例时,@Qualifier可省略。
此时,Spring按照类型匹配参数。
2)set方式注入
a.@Autowired加在set方法前面。b. @Qualifier加在参数前面,用于指定要注入的bean的id。
注:
注入的对象单例时,@Qualifier可省略。
此时,Spring按照类型匹配参数。
c.@Autowired也可以直接添加到属性前面,
此时,可以不写set方法。
@Resource
a.该标注只支持set方式注入
b.可以将该标注加到set方法前面,name属性用于指定要
注入的bean的id。
c.该标注也可以直接添加到属性前,此时,可以不写set方法。
7.使用spring表达式的标注
@Value用法一
@Value("#{spring表达式}")
用法二
@Value("基本类型的值")
注:
@Value可以用在属性前,也可以用在set方法前面。