我通常使用XML Spring配置(spring-conf.xml)来执行此操作:
<beans>
<context:component-scan base-package="org.company.dept.business" />
...
<bean id="myServiceB2B" class="org.company.dept.business.service.MyService"
p:configLocation="WEB-INF/classes/b2b.properties" />
<bean id="myServiceResidential" class="org.company.dept.business.service.MyService"
p:configLocation="WEB-INF/classes/residential.properties" />
...
</beans>
因为MyService只有一个文件(定义),有没有办法在不使用XML Spring配置的情况下实例化两个bean?
我对XML定义没问题,但我总是尽量减少我的XML配置。
答案 0 :(得分:11)
与在XML中使用2 <bean>
声明的方式相同,在Java配置中使用2 @Bean
个带注释的类。
@Configuration
public class MyConfiguration {
@Bean(name = "firstService")
public MyService myService1() {
return new MyService();
}
@Bean(name = "secondService")
public MyService myService2() {
return new MyService();
}
}
我不知道configLocation
的用途,但您也可以在Java配置中包含它。
name
的{{1}}属性相当于@Bean
的{{1}}属性。
答案 1 :(得分:2)
如果您需要bean的多个实例,则必须在XML或@Configuration
带注释的类中显式配置它们。无论哪种方式,您都需要某种方式明确定义bean,您不能仅通过组件扫描来拥有多个实例。