(六)Spring依赖注入(Field注入,用于注解方式)
首先需要定义命名空间,导入.xsd文件后才能使用注解方式,红色部分为添加部分
@Resource注解
在server的bean中为PersonDao变量使用@Resource 为其注解
在xml中的配置如下:
执行过程:
- 创建spring容器
- 由容器创建bean对象
- 因为PersonDao成员有其注解,所以会根据personDao这个名字寻找id与其相同的bean,如果有,则将找到的bean对象注入到PersonDao所在的对象中(上图示例如此),如果找不到,则会根据PersonDao的类型去寻找,找到后注入对象中。
也可直接使用name找到对应的Bean对象:
配置
或者可以使用属性注解的方式:
@autowire注解与自动装配
使用@autowire进行注解,默认按类型进行
如果想强制转成按名称进行
在@autowirde中增加一个属性,它表示personDao字段必须有注入的值,如果没有则报错
注意:当required = false,表示可以没有注入的值,如果没有注入,则字段为null
(七)让Spring自动扫描和管理Bean
如果一个项目中,把所有的bean都通过配置放入.xml文件中,则文件会非常臃肿,需要一个自动装配功能,实现将bean从配置文件中解脱出来。
- @Service 用于标注业务组件
- @Controller用于标注控制层给组件,如struts中的action
- @Repository用于标注数据访问组件即DAO组件
- @Component 泛指组件,当组件不好归类时,使用此注解进行标注
使用自动扫描功能,则需要在配置文件.xml中配置如下:
在对应的Bean类上面加入注解:
或者:
TEST测试:
通过控制台输出可看到生成的类对象。
以上注解方法默认为单例模式,只生成一个Bean对象。
如果每次调用都生成新的Bean对象,则需要另一个注解Scope,参数prototype表示原型类型:
当bean对象生成时,需要一个初始化方法,则可将此方法注解如下
对象销毁时注解的销毁方法如下: