spring @Autowired
Posted 张梦源
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring @Autowired相关的知识,希望对你有一定的参考价值。
一.@Autowired解决的问题是不同接口实现类之间引用的问题,自动装配--》注入对象
可以这样理解:本质上就是UserServiceImpl如何联系使用UserDaoImpl的对象
1.UserServiceImpl接口实现类
@Service("userService")
public class UserServiceImpl implements IUserService {
@Autowired
private IUserDao dao;
@Override
public String queryUser() {
return dao.queryUser();
}
}
2.UserDaoImpl接口实现类
@Repository("userdao")
public class UserDaoImpl implements IUserDao{
String name;
int age;
public UserDaoImpl(@Value("张小源")String name,@Value("19") int age) {
super();
this.name = name;
this.age = age;
}
@Override
public String queryUser() {
// 模拟查询到一个用户
return "name="+name+",age="+age;
}
}
}
一开始是按照dao进行查找,很不方便,及时我定义了一个userdao它也找不到。下面的@Qualifier会解决这个问题。看我下一篇文章。
总结:@Autowired自动装配,让UserServiceImpl接口实现类和UserDaoImpl接口实现类联系起来,实现的功能是xml配置文件里面的ref的功能等同于下面的代码
<bean id="userService"
class="com.bookmanagesystem.service.impl.UserServiceImpl">
<constructor-arg name="dao" ref="userDao"></constructor-arg><!--
实际上是等同于创建了一个new UserServiceImpl(dao) -->
</bean>
<bean id="userDao"
class="com.bookmanagesystem.dao.impl.UserDaoImpl">
</bean>
以上是关于spring @Autowired的主要内容,如果未能解决你的问题,请参考以下文章
Spring 梳理 - @Autowired VS @Resource
整理:spring注解 @Autowired @Qualifier @Resource
spring 代码中获取ApplicationContext(@AutoWired,ApplicationListener)