总结@value注入失败的原因
1、@value注解引入的类不对,需要引入如下类。 import org.springframework.beans.factory.annotation.Value; 2、没有加@component注解。或者其他注入bean的注解 3、使用new生成的对象 4、使用反射生成的对象。 5、静态方法无法使用@Value注入值。 在spring中只有通过IOC生成的对象才能够通过@value将配置文件中的值注入到变量中。所以通过new和反射生成的对象中@value是不能注入值的,所以大家在写代码的时候要注意,使用spring尽量不要使用new,否则你的所有注入变量和对象的注解都将失效。 而解决反射的方法就是使用applicationContext类通过类名生成你的bean对象。方法如下。
@Autowired
private ApplicationContext applicationContext;
//dingmsgName是类的名字
//利用反射调用发送方法
Class<?> aClass= null;
try {
aClass = Class.forName(dingMsgName);
} catch (ClassNotFoundException e) {
log.info("实例化模板错误。");
e.printStackTrace();
return ItooResult.build("1111","发送消息失败(消息类实例化错误),请联系管理员");
}
//通过applicationContext获取bean
Object sendMsgobject =applicationContext.getBean(aClass);
