好开森,今天终于看到利用注解的方式来实现依赖注入了,嘿嘿。
java
主要记录一下@Request , @Autowried及@Qualifier的用法。因为这里的一些文章都是与以前写的一些小要点有关,并且是依托于同一个开源的项目,因此,一些重复出现的代码配置啥的,就再也不贴出来了。spring
固然,首先咱们得在配置文件里加一句简单的context配置,以下所示:app
<context:annotation-config/>
因为用到了context包中的标签,因此引入对应的标签订义文件是必须的。具体以下所示:
单元测试
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 这句很重要哟! --> <context:annotation-config/> <!--相关配置 --> </beans>
下面正式开始介绍上面提到的三个注解。
测试
@Request
ui
一个用来检查的注解,检查属性是否已经设置。这样,在配置里若是这个被注解的属性没有配置,将会抛出BeanCreationException异常,俺也不知道这个注解好很差用,呵呵。this
亮代码及配置
spa
1.UserDao类代码:
.net
public class UserDao { private User user; public User getUser() { return user; } @Required public void setUser(User user) { this.user = user; } public void save() { System.out.println("Save user " + user.getName()); } public void save(User user) { System.out.println("Save user " + user.getName()); } }
配置: code
<bean id="userDao" class="org.tunie.learn.spring.ioc.dao.UserDao" > <property name="user" ref="user"/> </bean>
单元测试:
public class UserDaoTest { @Test public void testSave() { ApplicationContext applicationContext = ApplicationContextUtil.getApplicationContext(); UserDao userDao = applicationContext.getBean("userDao", UserDao.class); userDao.save(); assertEquals(userDao.getUser().getName() , "Tunie" ); } }
运行经过!
@Autowried,@Qualifier
@Autowried自动装配注解,能够自动装配对应的属性,不过因为容器可能存在多个符合条件的备选bean,因此@Qualifier注解就能够大显其手了,它将缩小备选bean的范围。下面简单的列取下使用的demo吧。
UserServer:
public class UserServer { private UserDao userDao; public void add(User user) { userDao.save(user); } public UserDao getUserDao() { return userDao; } @Autowired @Qualifier("main") public void setUserDao(UserDao userDao) { this.userDao = userDao; } }
配置:
<bean class="org.tunie.learn.spring.ioc.dao.UserDao"> <qualifier value="main"/> </bean> <bean id="userServer" class="org.tunie.learn.spring.ioc.server.UserServer"/>
即便存在上面的名为userDao的bean,咱们的userServer仍是能够很是准确的找到被qualifier标记为main的一个匿名bean。