概述
前面讲过使用注解配置bean,那么,两个不同类之间如何在此基础山建立关联呢?
Spring中提供了自动装配注解的实例:@Autowired、@Resource和@Inject
一、@Autowired
@Autowired可用于构造器、普通字段、一切具有参数的方法。只要在字段、构造器或方法前加上@Autowired即可,如在字段上添加@Autowired:
@Autowired
private UserRespository userRespository;
默认情况下,@Autowired注释意味着依赖是必须的,即所有用到@Autowired注解的属性都要设置(实例化),但是,当你不想设置某一属性时,可以使用@Autowired(required=false)选择关闭默认行为。
@Autowired(required = false)
private TestObject testObject;
此时的TestObject可以不添加注解直接使用,即
//测试@Autowired(required=false)
public class TestObject {
public TestObject() {
System.out.println("TestObject ...");
}
}
当一个接口对应多个实现类时,在你使用接口提供的方法时会出现available: expected single matching bean but found 多处的错误,此时的解决方法一是:在其中一个实现类添加注解的地方给定一个默认值,即
@Repository("userRepository")
解决方法二:在装配的时候指定名字
@Autowired
@Qualifier("userRepositoryImpl")
public UserRespository userRespository;
UserRepositoryImpl是UserRepository的一个实现类。
在依赖注入的时候,即Main.java中这样写:
ApplicationContext ctx=new
ClassPathXmlApplicationContext("beans-annotation.xml");
UserRespository userRespository=(UserRespository)ctx.getBean("userRepositoryImpl");
采用这种方法时要注意@Autowired中required的值:
@Autowired(required = true)
完整代码见:
https://github.com/13029403279/Study/upload/master
最后
以上就是舒心黄豆为你收集整理的Spring中bean与bean之间的关联的全部内容,希望文章能够帮你解决Spring中bean与bean之间的关联所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复