当前位置: 代码迷 >> 综合 >> spring @Autowired
  详细解决方案

spring @Autowired

热度:61   发布时间:2023-11-27 11:53:43.0

一.@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>

  相关解决方案