Java Spring3默认bean
我正在从事一个包含多个spring配置java类的项目。它们中的许多都有来自其他配置类的bean,这些bean自动连接到其他bean的构造函数中,然后注入到其他bean的构造函数中 为了使它尽可能灵活,我一直在使用spring概要文件来定义在多个可用接口的情况下使用哪个接口实现 这很好,但我想知道Spring是否有任何方法可以定义默认bean 例如:如果在类路径上找不到Foo类型的bean,则注入实现栏。否则,忽略吧 我已经研究了这个问题:,如果您知道所有bean的名称,那么用Java配置显示的解决方案可以很好地工作,但是在我的例子中,我不知道这些bean被称为什么Java Spring3默认bean,java,spring,dependency-injection,Java,Spring,Dependency Injection,我正在从事一个包含多个spring配置java类的项目。它们中的许多都有来自其他配置类的bean,这些bean自动连接到其他bean的构造函数中,然后注入到其他bean的构造函数中 为了使它尽可能灵活,我一直在使用spring概要文件来定义在多个可用接口的情况下使用哪个接口实现 这很好,但我想知道Spring是否有任何方法可以定义默认bean 例如:如果在类路径上找不到Foo类型的bean,则注入实现栏。否则,忽略吧 我已经研究了这个问题:,如果您知道所有bean的名称,那么用Java配置显示的
有人知道实现这一点的方法吗?将默认值定义为默认值,只要确保bean的名称相同,配置文件中的名称将覆盖默认名称
<beans>
<!-- The default datasource -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
</bean>
<beans profile="jndi">
<jndi:lookup id="dataSource" jndi-name="jdbc/db" />
</beans>
</beans>
使用基于java的配置时,您还可以指定默认值,并在另一个配置中添加该类型的另一个bean,并使用@Primary
对其进行注释。当找到多个实例时,应使用带有@Primary
的实例
@Configuration
public DefaultConfig {
@Bean
public DataSource dataSource() { ... }
}
@Configuration
@Profile("jndi")
public class JndiConfig {
@Bean
@Primary
public DataSource jndiDataSource() { ... // JNDI lookup }
}
非常感谢。小学是我一直在寻找的
@Configuration
public DefaultConfig {
@Bean
public DataSource dataSource() { ... }
}
@Configuration
@Profile("jndi")
public class JndiConfig {
@Bean
@Primary
public DataSource jndiDataSource() { ... // JNDI lookup }
}