一.@Autowired解决的问题是不同接口实现类之间引用的问题,自动装配--》注入对象
可以这样理解:本质上就是UserServiceImpl如何联系使用UserDaoImpl的对象
1.UserServiceImpl接口实现类
@Service("userService")
public class UserServiceImpl implements IUserService {@Autowiredprivate IUserDao dao;@Overridepublic 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;}@Overridepublic 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>