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

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

  (2)将B类的属性字段依旧都是static类型,并且都添加Get\Set方法,这些方法都是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的方式生成对象的类中有效利用注解。

------20200107闪

@Value注解没有起作用的梳理的更多相关文章

  1. JAVA 注解的几大作用及使用方法详解

    JAVA 注解的几大作用及使用方法详解 (2013-01-22 15:13:04) 转载▼ 标签: java 注解 杂谈 分类: Java java 注解,从名字上看是注释,解释.但功能却不仅仅是注释 ...

  2. JAVA 注解的几大作用及使用方法详解【转】

    java 注解,从名字上看是注释,解释.但功能却不仅仅是注释那么简单.注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后 某个时刻方便地使用这些数据(通过 解 ...

  3. 【Java】java注解@Transient的作用, 配合JPA中时间段的查询

    java注解@Transient的作用 @Transient标注的属性,不会被ORM框架映射到数据库中. 用于数据库表字段和java实体属性不一致的时候,标注在属性上使用. 例如时间段的查询 查询 R ...

  4. eclipse集成lombok注解不起作用

    安装步骤: 步骤一:lombok的下载地址为:https://projectlombok.org/download,jar包很小.这里也把依赖写出来: <dependency> <g ...

  5. Spring @Transactional注解不起作用解决办法及原理分析

    Transactional失效场景介绍 第一种 Transactional注解标注方法修饰符为非public时,@Transactional注解将会不起作用.例如以下代码. 定义一个错误的@Trans ...

  6. SpringBoot Shiro 权限注解不起作用

    最近在学习springboot结合shiro做权限管理时碰到一个问题. 问题如下: 我在userRealm中的doGetAuthorizationInfo方法中给用户添加了权限,然后在Controll ...

  7. @JsonIgnoreProperties注解不起作用的问题解决

    最近做的一个东西要调第三方服务接口,要参照接口文档开发,但是第三方服务的接口字段名全部都是大写,本来以为这种应该没有什么问题.但是实际开发中发现大写的字段名字去调后台接口的时候报: org.codeh ...

  8. JsonIgnore注解不起作用的解决办法

    一开始在属性上注解了JsonIgnore以为就不会序列化了,结果还是有这个属性,看来是没有起作用啊 [JsonIgnore] public List<int> SubjectAndSubS ...

  9. AOP注解不起作用的debug结果

    经过2天的调试,我发现AOP注解配置不起作用居然是表达式的错误导致的 在xml文件中配置的base-package有关,初步认为@PointCut只能使用base-package..*(..)这样的方 ...

随机推荐

  1. 前端jQuery日历控件报错 $("#datepicker").datepicker is not a function

    使用日历控件时,前端产生错误: $("#datepicker").datepicker is not a function 问题原因 前端在同一个页面,jQuery引入了两次. 解 ...

  2. NR / 5G - MAC Overview

  3. 卫星轨道相关笔记SGP4

    由卫星历书确定卫星轨道状态向量 卫星历书的表示方法有2种: TLE(Two Line Element),和轨道根数表示方法 由卫星历书计算出卫星轨道状态向量的方法有2种: SGP方法,NORAD的方法 ...

  4. 代码质量:SonarQube

    SonarQube SonarQube的安装 jenkins(十四):Jenkins和sonarqube集成 https://www.cnblogs.com/sunyllove/p/9895373.h ...

  5. linux中的特殊符号及其含义梳理

    1. 重定向符号及含义 注意:箭头流向即是数据的流向. 数字0:标准输入(standard input,简写stdin),数据从右往左方向流动 数字1:标准正确输出(standard output,简 ...

  6. Python编程:从入门到实践——【作业】——第六章(字典)

    第六章作业 6-1 人 : 使用一个字典来存储一个熟人的信息, 包括名. 姓. 年龄和居住的城市. 该字典应包含键first_name . last_name . age 和city . 将存储在该字 ...

  7. Keras深度学习框架之损失函数

    一.损失函数的使用 损失函数[也称目标函数或优化评分函数]是编译模型时所需的两个参数之一. model.compile(loss='mean_squared_error', optimizer='sg ...

  8. echarts 的 formatter用法

    前言:formatter格式化方法.使用formatter调用自定义的数据,把内容通过处理让变成我们想要的样子. 比如,echarts数据显示是这样的(bug:部分内容被隐藏掉了,显示太长,不美观) ...

  9. 【C#】写文件时如何去掉编码前缀

    我们都知道,文件有不同的编码,例如我们常用的中文编码有:UTF8.GK2312 等. Windows 操作系统中,新建的文件会在起始部分加入几个字符的前缀,来识别编码. 例如,新建文本文件,写入单词 ...

  10. java设计模式4——原型模式

    java设计模式4--原型模式 1.写在前面 本节内容与C++语言的复制构造函数.浅拷贝.深拷贝极为相似,因此建议学习者可以先了解C++的该部分的相关知识,或者学习完本节内容后,也去了解C++的相应内 ...