有没有办法仅使用注释声明来自同一类的两个 Spring Bean 实例



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

@Beanname 属性等同于 <bean>id属性。

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

最新更新