将bean作为属性

时间:2016-08-17 04:22:00

标签: spring spring-mvc

我有一个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>

我可以设置usernamepassword属性,但无法将configParam属性设置为employee,因为我们需要注入ConfigParam和它是bean。请告诉我如何在employee方法中注入bean。

1 个答案:

答案 0 :(得分:0)

假设包含configParam定义的Spring XML上下文被称为my-spring-context.xml,并且位于resources/spring文件夹中,换句话说就是在您的folder春天classpath(名称和文件夹是任意的):

使用ApplicationConfiguration注释使您的@ImportResource配置类了解该XML上下文文件:

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

然后在你的employee方法依赖项中,像往常一样注入XML bean。如果要按名称而不是按类型进行注入,可以在@Qualifier("myBeanName")参数定义之前直接添加configParam

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