zoukankan      html  css  js  c++  java
  • @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的方式生成对象的类中有效利用注解。

  • 相关阅读:
    ef mysql
    mvc RedirectToAction、mobile 重定向地址栏未改变
    避免复制引用程序集的XML文件
    端口扫描工具
    Python简单全双工聊天器
    Python半双工聊天程序
    Python简单服务器程序
    python+scrapy爬取亚马逊手机商品
    python+scrapy爬取知乎日报全站文章
    简单直接排序
  • 原文地址:https://www.cnblogs.com/bien94/p/12163134.html
Copyright © 2011-2022 走看看