博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二 IOC之注解的方式
阅读量:7002 次
发布时间:2019-06-27

本文共 1569 字,大约阅读时间需要 5 分钟。

hot3.png

    好开森,今天终于看到利用注解的方式来实现依赖注入了,嘿嘿。

    主要记录一下 , @Autowried及@Qualifier的用法。由于这里的一些文章都是与之前写的一些小要点有关,而且是依托于同一个开源的项目,所以,一些重复出现的代码配置啥的,就不再贴出来了。

    当然,首先我们得在配置文件里加一句简单的context配置,如下所示:

    由于用到了context包中的标签,所以引入对应的标签定义文件是必须的。具体如下所示:

        

    下面正式开始介绍上面提到的三个注解。

    

    一个用来检查的注解,检查属性是否已经设置。这样,在配置里如果这个被注解的属性没有配置,将会抛出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());	}}

    配置:    

    单元测试:

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;	}}

    配置:   

    即使存在上面的名为userDao的bean,我们的userServer还是可以非常准确的找到被qualifier标记为main的一个匿名bean。

转载于:https://my.oschina.net/u/2011113/blog/324609

你可能感兴趣的文章