首页 > 代码库 > 二 IOC之注解的方式
二 IOC之注解的方式
好开森,今天终于看到利用注解的方式来实现依赖注入了,嘿嘿。
主要记录一下@Request , @Autowried及@Qualifier的用法。由于这里的一些文章都是与之前写的一些小要点有关,而且是依托于同一个开源的项目,所以,一些重复出现的代码配置啥的,就不再贴出来了。
当然,首先我们得在配置文件里加一句简单的context配置,如下所示:
<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
一个用来检查的注解,检查属性是否已经设置。这样,在配置里如果这个被注解的属性没有配置,将会抛出BeanCreationException异常,俺也不知道这个注解好不好用,呵呵。
亮代码及配置
1.UserDao类代码:
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()); } }
配置:
<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="http://www.mamicode.com/main"/> </bean> <bean id="userServer" class="org.tunie.learn.spring.ioc.server.UserServer"/>
即使存在上面的名为userDao的bean,我们的userServer还是可以非常准确的找到被qualifier标记为main的一个匿名bean。
二 IOC之注解的方式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。