- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
过去,我见过人们使用以下 2 个习惯用法从同一个 @Configuration
注入(inject)依赖项:
@Configuration
public class MyConfiguration {
@Bean
public MyBeanDependencyA myBeanDependencyA(){
return new MyBeanDependencyA();
}
@Bean . //IDIOM 1
public MyBeanDependencyB1 myBeanDependencyB1(){
return new MyBeanDependencyB1(myBeanDependencyA());
}
@Bean //IDIOM 2
public MyBeanDependencyB2 myBeanDependencyB2(MyBeanDependencyA myBeanDependencyA){
return new MyBeanDependencyB1(myBeanDependencyA);
}
}
它们之间有什么实际区别吗?
Spring容器有那么聪明吗?
最佳答案
Does Spring process the whole instantiation method in each call for IDIOM 1? (relevant if method has any side-effect, might be not idempotent)?
默认情况下,@Configuration
类在运行时被代理,因此MyBeanDependencyA
将被创建一次,并且myBeanDependencyA()
将仅被调用一次Spring 和下一个调用将被代理以返回相同的实例(就您共享的示例而言)。上下文中只会有该 bean 的一个实例,因为它的范围是 Singleton
。
Does otherwise Spring inject the global managed instance when injecting for IDIOM 1? (relevant If some external process changes the state of the original singleton bean)
当 IOC 容器被查询时,它将返回 Singleton bean 的相同实例。由于它是一个 Singleton
,对此 bean 的所有更改(如果它是可变的)对于引用它的组件来说都是可见的。
作为旁注,您可以禁用配置类的自动代理,因为 Spring 5.2通过使用:
@Configuration(proxyBeanMethods = false)
这将阻止从其他 @Bean
方法调用的用 @Bean
注释的方法的代理调用。
关于java - 从完全相同的 @Configuration 类习惯用法中注入(inject) @Beans,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59059368/
我编写的代码主要供个人使用,但我正在考虑发布我最初开发供个人使用的应用程序(科学模拟/可视化)。 我的一个习惯是在类中使用一个main方法来单独测试类的运行情况。我认为这在某种程度上可能是不好的(毫无
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: How do I convince programmers in my team to do TDD? 在从
假设我想测试是否有一个名为“Z”的驱动器。第一步是这样的; Get-PSProvider | Select-Object -Property Drives 这个给我; Drives: ... {C,
这是对 an old answer to a question about the necessity of functools.partial 的一种跟进: 虽然这个答案非常清楚地解释了这种现象及其
Perl 习惯很难改掉。两种语言之间的变量声明、作用域、全局/局部是不同的。是否有一组推荐的 python 语言习语可以使从 perl 编码到 python 编码的过渡不那么痛苦。 细微的变量拼写错误
我是一名优秀的程序员,十分优秀!