当前位置: 首页 > 知识库问答 >
问题:

Bean@在Spring默认自动安装

韩博厚
2023-03-14

我正在使用SpringFramework和Java。我使用SpringXML文件来定义体系结构的流程,以及Java部分将使用的bean。

我的xml文件中有两个相同类的bean,但它们的构造函数参数不同:

<bean id="beanA" class="Class" >
    <constructor-arg><value>valueA1</value></constructor-arg>
    <constructor-arg><value>ValueA2</value></constructor-arg>
</bean>

<bean id="beanB" class="Class" >
     <constructor-arg><value>valueB1</value></constructor-arg>
     <constructor-arg><value>valueB2</value></constructor-arg>-->
</bean>

是否有一种方法可以将其中一个bean设置为默认值,以便从Java@Autow的它?并且,当我想使用非默认bean时,应用@Qulifier("beanName")注释。

共有2个答案

裴昊阳
2023-03-14

最后我使用了接下来的事情:我在我要使用的类的java代码中有一个setter(setClassValue(Class class Value))。然后,我将属性autowire-候选设置为bean中的false,它不会是默认的:

<bean id="beanA" class="Class" autowire-candidate="false">
    <constructor-arg><value>valueA1</value></constructor-arg>
    <constructor-arg><value>valueA2</value></constructor-arg>
</bean>

<bean id="beanB" class="Class" >
     <constructor-arg><value>valueB1</value></constructor-arg>
     <constructor-arg><value>valueB2</value></constructor-arg>
</bean>

然后,在xml文件中,我定义了类的bean,该bean将自动连接到类,我使用java的setClassValue(class classValue)方法:

<bean id="classThatAutowire" class="ClassThatAutowire" >
    <property name="classValue" ref="beanA" />
</bean>

在Java代码中,yo将有@Autow的beanB,然后设置beanA。这不是最佳实践,但它有效。

穆鸿飞
2023-03-14

尝试属性,例如

<bean id="b1" class="test.B" />
<bean id="b2" class="test.B" />
<bean id="b3" class="test.B" primary="true" />

这保证了B3Bean将在此处注入

public class Test {
    @Autowired
    B b;
...
 类似资料:
  • 我已经研究过这个问题:Spring3:注入默认Bean,除非存在另一个Bean,如果您知道所有Bean的名称,Java配置中显示的解决方案将很好地工作,但在我的情况下,我不知道Bean被称为什么。 有人知道有什么办法可以做到这一点吗?

  • Spring Boot是否有默认的EntityManager。我现在正在设置一个,但我注意到当我的项目加载时,我看到了以下内容: LocalContainerEntityManagerFactoryBean:为持久性单元“默认”构建JPA容器EntityManagerFactory 这是默认的EntityManager吗?如果是,我如何访问它? 提前谢谢你。

  • 问题内容: 背景: 我有一个Spring 2.5 / Java / Tomcat应用程序。下面的bean在整个应用程序中的许多地方都使用过 以下是新的bean: 第一个bean的配置如下(包含了软件包中的所有bean) 第二个(新)bean是单独配置的 启动服务器时,这(当然)会导致异常: 从试图像这样自动装配bean的类中 因为有两个bean实现相同的接口。 问题: 是否可以配置Bean,以便

  • 我有一个spring 2.5/Java/Tomcat应用程序。下面有一个bean,在整个应用程序的许多地方都使用了这个bean 和以下新bean: 第一个bean是这样配置的(包中的所有bean都包含在内) 第二个(新的)bean是单独配置的 这会导致(当然)启动服务器时出现异常: 嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitio

  • 我想使用Spring Security进行JWT身份验证。但它带有默认身份验证。我正在尝试禁用它,但在2.0中不推荐使用旧的方法--通过禁用它。 这是我尝试过的: 我怎么能简单地禁用基本安全? 更新 知道我使用的不是web mvc而是web Flux可能会很高兴。