我通常使用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配置。
就像在 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 配置中。
@Bean
的 name
属性等同于 <bean>
的id
属性。
如果需要 Bean 的多个实例,则必须在 XML 或@Configuration
注释类中显式配置它们。 无论哪种方式,您都需要某种显式定义 bean 的方法,您不能仅通过组件扫描来拥有多个实例。