您无法在
中使用@Value
或BeanPostProcessor
类型BeanFactoryPostProcessor
但它适用于我
@Component("emp")
class Employee implements BeanPostProcessor {
@Autowired
public Employee(@Value("pankaj") String name) {
System.out.println(name);
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
}
这是打印出来的
pankaj
我错过了什么?
我也试过表达,它也有效:
在Employee
上面推出的课程
@Autowired
public Employee(@Value("#{example.name}") String name) {
System.out.println(name);
}
示例类就像这样
@Component("example")
public class Example {
public static String name="Abc";
}
打印出来
Abc
我尝试使用属性解析,它也适用于我: 的 propfolder / abc.properties
example.name = pankaj dubey 的 spring.xml
<context:component-scan base-package="spring.tst.beans"/>
<context:property-placeholder location="propfolder/abc.properties"/>
使用以下代码更新了Employee
课程
@Autowired
public Employee(@Value("${example.name}") String name) {
System.out.println(name);
}
答案 0 :(得分:1)
javadoc指的是注释的属性解析功能。例如,你可能有
@Value("${example.pankaj}")
您希望Spring使用键example.pankaj
(来自某个属性源)注入属性的值。在你的例子中,这不会发生。相反,Spring将注入值
${example.pankaj}
字面上。