spring bean依赖

一个春天建议注射豆从Spring的参考指南复制下面的示例中显示之间的相互依存关系的方式在这里 :

@Configuration
public class AppConfig {@Beanpublic Foo foo() {return new Foo(bar());}@Beanpublic Bar bar() {return new Bar("bar1");}}

所以在这里,bean`foo`被注入了`bar`依赖关系。

但是,还有一种替代方法无法很好地记录依赖关系,它是通过以下方式将依赖关系作为@Bean方法参数:

@Configuration
public class AppConfig {@Beanpublic Foo foo(Bar bar) {return new Foo(bar);}@Beanpublic Bar bar() {return new Bar("bar1");}}

不过这里有一个问题,注入现在是按类型进行的,`bar`依赖项将首先按类型进行解决,如果找到重复项,则按名称进行解决:

@Configuration
public static class AppConfig {@Beanpublic Foo foo(Bar bar1) {return new Foo(bar1);}@Beanpublic Bar bar1() {return new Bar("bar1");}@Beanpublic Bar bar2() {return new Bar("bar2");}
}

在上面的示例中,依赖项“ bar1”将被正确注入。 如果您想更明确一点,可以在以下位置添加@Qualifer批注:

@Configuration
public class AppConfig {@Beanpublic Foo foo(@Qualifier("bar1") Bar bar1) {return new Foo(bar1);}@Beanpublic Bar bar1() {return new Bar("bar1");}@Beanpublic Bar bar2() {return new Bar("bar2");}
}

因此,现在是否建议这样做的问题,在某些情况下我会说是。 例如,如果在不同的@Configuration类中定义了bar bean,则注入依赖项的方式如下:

@Configuration
public class AppConfig {@Autowired@Qualifier("bar1")private Bar bar1;@Beanpublic Foo foo() {return new Foo(bar1);}}

我发现这里的方法参数方法更简单:

@Configuration
public class AppConfig {@Beanpublic Foo foo(@Qualifier("bar1") Bar bar1) {return new Foo(bar1);}}

有什么想法吗?

翻译自: https://www.javacodegeeks.com/2014/10/spring-configuration-and-injecting-bean-dependencies-as-method-parameters.html

spring bean依赖

spring bean依赖_Spring @Configuration并将bean依赖项作为方法参数注入相关推荐

  1. Spring学习笔记(一):bean对象的配置Ioc

    文章目录 把对象创建交给spring管理 一.创建bean的三种方式 二.bean对象的作用范围 三.bean对象的生命周期 spring中的依赖注入 一.构造函数注入(除非必须,一般不用) 二.se ...

  2. 【SSM框架系列】Spring IoC(控制反转) DI(依赖注入)注解开发

    Spring注解开发 Spring是轻代码重配置的框架,配置比较繁重,会影响开发效率.这个时候可以通过注解开发,注解代替xml配置文件可以简化配置,提高开发效率. Spring原始注解 注解分为原始注 ...

  3. java mvc 绑定_关于Java:Spring MVC:将请求属性绑定到控制器方法参数

    在Spring MVC中,很容易将请求参数绑定到处理请求的方法参数. 我只是使用@RequestParameter("name"). 但是我可以对request属性做同样的事情吗? ...

  4. java spring配置类_spring 配置 Java配置类装配bean

    https://www.cnblogs.com/chenbenbuyi/p/8457700.html 自动化装配的确有很大的便利性,但是却并不能适用在所有的应用场景,比如需要装配的组件类不是由自己的应 ...

  5. spring bean作用域_Spring面试知识点,这是我见过最全面的 - 知识铺

    知识铺: 致力于打造轻知识点,持续更新每次的知识点较少,阅读不累.不占太多时间,不停地来唤醒记忆深处的知识点. Q1.什么是Spring框架? Spring是最流行的企业应用程序框架之一.Spring ...

  6. Spring的新注解——Configuration、ComponentScan、Bean、Import、PropertySource || spring整合Junit分析

    spring中的新注解 spring整合Junit分析 1.应用程序的入口       main方法 2.junit单元测试中,没有main方法也能执行     junit集成了一个main方法    ...

  7. [转]Spring注解-@Configuration注解、@Bean注解以及配置自动扫描、bean作用域

    1.@Configuration标注在类上,相当于把该类作为spring的xml配置文件中的<beans>,作用为:配置spring容器(应用上下文) package com.test.s ...

  8. 【Spring 高级注解】@Configuration、@Bean、@ComponentScan

    Spring 高级注解(3.x以上) @Configuration:配置 Bean 基于注解开发使用日志 logback @Bean 注解 @Bean 注解的基本使用 @Bean 注解的注入与细节 @ ...

  9. spring的bean注释_Spring @Bean注释

    spring的bean注释 Spring @Bean Annotation is applied on a method to specify that it returns a bean to be ...

最新文章

  1. 网络安全系列之七 网站提权
  2. nodejs安装jsdom模块出现MSB4025错误
  3. Xamarin XAML语言教程Xamarin.Forms中程序状态与进度(一)
  4. Spring-学习笔记10【Spring事务控制】
  5. 【Python】学习笔记总结(第一阶段(1-6)——汇总篇)
  6. iOS 后台返回json解析出现的null的解决办法
  7. centos一键清理磁盘空间_docker越来越大,心慌,清理一波吧
  8. java代理的原理及应用
  9. Logistic回归主要应用领域
  10. 2020品牌情商指数报告
  11. 2020程序员人群洞察报告
  12. java捕获子程序异常,防止异常与捕获Java中的异常
  13. 动态字段无法双向绑定_ASP.NET Core Blazor Webassembly 之 数据绑定
  14. Vijos P1335 数独验证【谜题】
  15. 深度学习实践指南(三)—— 参数(超参)及数据集的处理
  16. cvSobel() 梯度和Sobel导数
  17. 超像素分割图神经网络资料汇总
  18. 【Vue】var that=this写法的意义
  19. 新员工来到项目组的愿景_为您的项目设定愿景
  20. 你们要的《Java工程师成神之路》高清版思维导图,来了!

热门文章

  1. ssl提高组周六模拟赛【2019.3.2】
  2. codeforces 962E Byteland, Berland and Disputed Cities 最小生成树变形
  3. 12、play整合Akka
  4. MongoDB投影字段
  5. Spring框架-事务管理注意事项
  6. Hadoop生态Flume(一)介绍
  7. 一次动态代理的填坑之旅
  8. 浅析神经网络为什么能够无限逼近任意连续函数
  9. Jdk1.8 JUC源码增量解析(2)-atomic-LongAdder和LongAccumulator
  10. epoll 浅析以及 nio 中的 Selector