【58】Spring总结之注解(2)
2016-06-19 23:07
399 查看
启用注解配置:
1.context:annotation-config
该配置表示启用注解。2.context:component-scan base-package=”.”
该配置表示扫描哪些包下的注解,该配置隐式注册了多个对注解进行解析的处理器,其中包括了配置项里面的注解所使用的处理器。所以,在配置了以后,就不用再配置。注解类:
@Component、@Repository、@Service、@Controller、
@Service:用于标注业务层组件。@Repository:用于标注数据访问组件,即DAO组件。
@Controller:用于标注控制层组件,如Struts中的Action。
@Component:泛指组件,当组件不要好归类时,可以使用这个注解进行标注。
Autowired和Resource
建议使用Resource
@Autowired可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作。类的实现1--对成员变量进行标注: public class UserServiceImpl implements IUserService { @Autowired private UserDao userDao; …… } 类的实现2--对方法进行标注: public class UserServiceImpl implements IUserService { private UserDao userDao; @Autowired public void setUserDao(UserDao userDao) { this.userDao = userDao; } }
required,Qualifier和autoWrite配合
autoWrite默认按照类型来装配
如果当Spring上下文中存在不止一个UserDao类型的bean时,就会抛出BeanCreationException异常;如果Spring上下文中不存在UserDao类型的bean,也会抛出BeanCreationException异常。我们可以使用@Qualifier配合@Autowired来解决这些问题。1) 可能存在多个UserDao实例
Java代码: @Autowired public void setUserDao(@Qualifier("userDao") UserDao userDao) { this.userDao = userDao; } 这样,Spring会找到id为userDao的bean进行装配。
2) 可能不存在UserDao实例
Java代码: @Autowired(required = false) public void setUserDao(UserDao userDao) { this.userDao = userDao; }
Resource
@Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按byName自动注入罢了。@Resource有两个属性是比较重要的,分别是name和type,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。@Resource装配顺序
如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常;如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常;
如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常;
如果既没有指定name,又没有指定type,则自动按照byName方式进行装配(见2);如果没有匹配,则回退为一个原始类型(UserDao)进行匹配,如果匹配则自动装配。
参考:
http://jiaxiaoyuan1204.blog.163.com/blog/static/65553152011350147451/
http://yedward.net/?id=339
我的微信二维码如下,欢迎交流讨论
欢迎关注《IT面试题汇总》微信订阅号。每天推送经典面试题和面试心得技巧,都是干货!
微信订阅号二维码如下:
相关文章推荐
- 20145231《Java程序设计》课程总结
- Javaworkers团队最终项目总结
- Java课程总结
- java对接mysql(增删改)
- javaweb中的servlet相关知识
- 20145326 《Java程序设计》课程总结
- java中的SM4
- web项目实现Excel数据导入导出
- 20145307JAVA学习期末总结
- java枚举使用详解
- Java学习笔记之《前言》
- 【java】:selection doesn't contain a maintype
- 20145213祁玮のJava课程总结
- 02-java类库(集合类)
- Spring学习(二十四)Spring实现AOP
- 20145206邹京儒《Java程序设计》课程总结
- Maven项目中提示:Eclipse “cannot be resolved to a type” error
- JavaSE复习_8 泛型程序设计
- 20145329 《Java程序设计》课程总结
- 学习android笔记(8):解决eclipse 找不到project.properties文件的终极办法