• @Value注解没有起作用的梳理


      今天在使用@Value注解的时候遇到其不起作用的现象,先把场景说明一下:现在有A类和B类,而A类对象是通过new操作生成的临时对象,而B类对象是在A类中使用的;调试步骤如下:

      (1)将B类的属性字段都设置为static类型,并且在字段上面添加@Value注解,B类中的方法都是static类型,此时在A类中使用B类方法时通过静态调用即可;经过调试发现,B类中的所有的静态字段都是null,也就是说@Value注解返回的是null值,并没有从配置application.properties文件中获取到有效值。因此,这种应用方式不对。

      (2)将B类的属性字段依旧都是static类型,并且都添加GetSet方法,这些方法都是static类型,同时在Set方法上添加了@Value注解,此时没有在字段上面添加@Value注解;经过调试发现,这些属性字段值依旧都是null,没有达到预期效果。

      (3)在B类定义上面添加@Component注解,将B类的字段和方法都设置为非static类型,在字段定义上面添加@Value注解,在A类中添加@Autowired注解来组装B类对象,当然在A类定义上面添加了@Component注解;经过调试发现,B类对象的字段值还是null,此方式依旧没有满足需求。

      (4)假设之前A类是在C类中通过new操作生成的临时变量,那么现在修改这种生成对象的方式,在C类中采@Autowired注解来生成A类对象,而A类和B类都在定义上面添加了@Component注解,在A类中也是通过@Autowired注解来组装B类对象, 并且在B类中字段都是通过@Value注解设置的;最终,经过调试发现,B类对象中的字段都有值了,并且都是配置文件中配置好的值;故,该使用策略能够符合期望要求。

       小结:通过上述步骤的测验,不能在采用new的方式生成对象的类中有效利用注解。

  • 相关阅读:
    mysql 批量插入与单条插入 的效率比较
    jQuery Validate自定义验证方法实现方式
    分析比较多表查询中的IN与JOIN
    SQL中on条件与where条件的区别
    jQuery.ajax向后台传递数组问题
    jquery ajax post 传递数组 ,多checkbox 取值
    孙俪袭击入股海润影视折射啥弊端?
    [WebView学习之三]:使用WebView来创建Apps
    hdu1010 dfs+路径剪枝
    poj 3696 The Luckiest number 欧拉函数在解a^x=1modm的应用
  • 原文地址:https://www.cnblogs.com/bien94/p/12163134.html
Copyright © 2020-2023  润新知