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

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值