1、@value注解引入的类不对,需要引入如下类。
import ;
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);