总结@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);