4

我通常使用 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 配置。

4

2 回答 2

14

<bean>与在 XML 中使用 2 个声明的方式相同,@Bean在 Java 配置中使用 2 个带注释的类。

@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属性@Bean等价于 的id属性<bean>

于 2013-09-09T12:41:52.260 回答
3

如果您需要一个 bean 的多个实例,您必须在 XML 或带@Configuration注释的类中显式配置它们。无论哪种方式,您都需要某种方式来显式定义 bean,您不能仅通过组件扫描来拥有多个实例。

于 2013-09-09T12:15:55.607 回答