我知道从@configuration
中调用@bean
带注释的方法,前面已经讨论过了。
但是我不明白为什么当bean被覆盖时它就不起作用了。
我有一个遗留类,我不能修改。它是一个配置,同时也是一个业务bean。这是一个简化版本:
@Configuration
public class MyBean {
String someMethod() {
return otherBean() + "|" + otherBean();
}
int called = 0;
@Bean
Object otherBean() {
return called ++;
}
}
@SpringJUnitConfig//(MyBean.class)
public class BeanTest {
@Autowired
MyBean myBean;
@Test
void testIt() {
assertEquals("0|0", myBean.someMethod());
}
@Configuration
static class TestConfig {
@Bean
MyBean myBean() {
return new MyBean();
}
}
}
现在,调用myBean.someMethod()
返回01
而不是00
。
当testconfig
配置被删除并且测试上下文的配置被设置为@SpringJunitConfig(MyBean.class)
时,一切都能正常工作(结果为00
)。
在测试中注册bean有什么不同?
代理用@bean
注释的方法调用并从Spring上下文返回实例的“魔法”仅发生在配置bean中(如这里:@SpringJUnitConfig(MyBean.class)
)。
但是,当您创建一个新实例时,返回new MyBean()
时,@configuration
注释将被忽略,对象被注册为普通bean(@bean MyBean MyBean()
),而不是配置。这就是方法调用otherBean()
总是创建一个新实例的原因。
我很好奇spring注入是如何用注释处理调用方法的。如果我将注释放在一个方法上,并返回一个实例,我理解这会告诉spring通过调用该方法并获得返回的实例来创建一个bean。但是,有时该bean必须用于连接其他bean或设置其他代码。通常的方法是调用带注释的方法来获得一个实例。我的问题是,为什么这不会导致bean的多个实例浮动? 例如,参见下面的代码(摘自另一个问题)。方法是用注释的,因此我想spr
问题内容: 我很好奇弹簧注入如何处理带有注释的调用方法。如果我在方法上添加注释并返回实例,则我理解这告诉spring通过调用方法并获取返回的实例来创建bean。但是,有时必须使用该bean来连接其他bean或设置其他代码。完成此操作的通常方法是调用带注释的方法以获取实例。我的问题是,为什么这不会导致有多个bean实例漂浮? 例如,请参见下面的代码(取自另一个问题)。该方法带有注释,因此我可以想象s
本文向大家介绍PowerShell单行注释、多行注释、块注释的方法,包括了PowerShell单行注释、多行注释、块注释的方法的使用技巧和注意事项,需要的朋友参考一下 PowerShell的注释符分为行注释符和块注释符。行注释符使用井号(#)引起一行;块注释符使用“<#”和 “#>”来引起一段注释。 行注释符 举例如下: 块注释符、多行注释 举例如下: 这是小编每次写脚本之前,都会定义的一段关于脚
问题内容: 有人可以给MWE 直接在方法上使用注释的方法吗? 我已经看到了无数的关于在类定义中使用它的示例-但还没有方法的示例。 引用文档: 这种添加到一个类定义或 一个方法 @Target(value = {TYPE, METHOD }) 因此,我认为还有一种可能性和预期的用途-但不幸的是,我无法弄清楚。 问题答案: 这里的DataSource类具有属性url,用户名,密码,driverClas
我使用Netbeans来了解JavaEE。我使用“插入代码”和“调用企业bean”来获取一个远程bean,其接口位于我的项目中包含的库中。如果我的项目是一个web应用程序netbeans,那么这样做会插入一个如下所示的函数。(这是一个jndi查找,对吗?) 当您在企业应用程序客户端中执行同样的操作时,netbeans只会给出 这是为什么? 如果我试图在web应用程序中手动创建第二个,服务器会出现如