我有一个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>
我可以设置username
和password
属性,但无法将configParam
属性设置为employee
,因为我们需要注入ConfigParam
和它是bean
。请告诉我如何在employee
方法中注入bean。
答案 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;
}