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

将bean作为属性注入的Spring配置类

咸弘雅
2023-03-14

我有一个Spring配置类,我正在使用它从属性文件中读取并创建bean。

    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.PropertySource;

    @Configuration
    @PropertySource("classpath:conf.properties")
    public class ApplicationConfiguration {

        @Value("${name}")
        private String username;

        @Value("${password}")
        private String password;

        @Value("${ethnicity}")
        private String ethnicity;

         @Bean 
           public Employee employee(){
            Employee emp = new Employee();
            ConfigParam configParam = new ConfigParam();
            configParam.setEthnicity(ethnicity);
            emp.setConfigParam(configParam);   
            return emp;
           }
    } 

在xml文件中

  <property name="configParam">
        <bean class="com.test.config.ConfigParam">
            <property name="ethnicity" value="indian" />
        </bean>
    </property>

我能够设置用户名密码属性,但无法将config Param属性设置为员工,因为我们需要注入ConfigParam及其bean。请让我知道如何在员工方法中注入bean。

共有1个答案

陈松
2023-03-14

假设包含configParam定义的Spring XML上下文称为my Spring上下文。xml并位于资源/spring文件夹中,换句话说,位于类路径中的spring文件夹中(名称和文件夹是任意的):

通过使用ImportResource注释,使您的应用程序配置配置类知道该XML上下文文件:

@Configuration
@ImportResource("classpath:spring/my-spring-context.xml")
@PropertySource("classpath:conf.properties")
public class ApplicationConfiguration {
//...
}

然后在您的员工方法依赖项中像往常一样注入XML bean。如果要按名称而不是按类型插入,可以直接在参数定义前添加限定符(“myBeanName”)。

  @Bean
  @Autowired 
  public Employee employee(ConfigParam configParam){
    Employee emp = new Employee();
    configParam.setEthnicity(ethnicity);
    emp.setConfigParam(configParam);   
    return emp;
  }
 类似资料:
  • 主要内容:构造函数注入,setter 注入,短命名空间注入所谓 Bean 属性注入,简单点说就是将属性注入到 Bean 中的过程,而这属性既可以普通属性,也可以是一个对象(Bean)。 Spring 主要通过以下 2 种方式实现属性注入: 构造函数注入 setter 注入(又称设值注入) 构造函数注入 我们可以通过 Bean 的带参构造函数,以实现 Bean 的属性注入。 使用构造函数实现属性注入大致步骤如下: 在 Bean 中添加一个有参构造函数,构造

  • 问题内容: 我有一堆Spring bean,它们是通过注释从类路径中拾取的,例如 我想将app.properites的属性之一注入到上面显示的bean中。我不能简单地做这样的事情 因为PersonDaoImpl在Spring XML文件中没有功能(它是通过注释从类路径中拾取的)。我有以下内容: 但是我不清楚我如何从中访问我感兴趣的财产? 问题答案: 你可以在Spring 3中使用EL支持进行此操作

  • 我试图向自定义注释中注入一个值,但Spring似乎没有进行评估。

  • 问题内容: 我有一堆Spring bean,它们是通过注释从类路径中拾取的,例如 在Spring XML文件中,定义了一个PropertyPlaceholderConfigurer: 我想将app.properites的属性之一注入到上面显示的bean中。我不能简单地做这样的事情 因为PersonDaoImpl在Spring XML文件中没有功能(它是通过注释从类路径中拾取的)。我有以下内容: 但

  • 本文向大家介绍Spring Bean的属性注入方式,包括了Spring Bean的属性注入方式的使用技巧和注意事项,需要的朋友参考一下 在spring中bean的属性注入有两种 构造器注入 Setter方法注入 集合属性的注入 在spring中对于集合属性,可以使用专门的标签来完成注入. 例如:list set map properties等集合元素来完成集合属性注入. List属性注入 如果属性

  • 如何将和的值注入Spring重试注释?在下面的示例中,我想用配置属性的相应引用替换maxAttempts的值和backoff值的值。