我是靠谱客的博主 舒心黄豆,最近开发中收集的这篇文章主要介绍Spring中bean与bean之间的关联,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前面讲过使用注解配置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;
UserRepositoryImplUserRepository的一个实现类。

在依赖注入的时候,即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之间的关联所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部