关于@Value注解取不到值的几种情况

网友投稿 1861 2022-11-22

关于@Value注解取不到值的几种情况

关于@Value注解取不到值的几种情况

目录@Value注解取不到值的几种情况几种获取不到值的特殊情况如下@Value取不到值的原因可能原因有正确方式

@Value注解取不到值的几种情况

在spring的框架中,我们经常使用@Value注解来获取定义在application.properties的属性值,正常情况下是可以轻松的获取到值的,但是有几种特殊情况下是获取不到值的,在这记录下,以防止以后犯错误。正常获取的用法如下:

在application.properties中定义一个属性值:

正常情况下在代码里面这样Nulluv获取:

@Value("${ftpIP}")

private String ftpIP;

几种获取不到值的特殊情况如下

情况一:使用static或者final修饰了tagValue

@Value("${ftpIP}")

private static String ftpIP;

@Value("${ftpUserName}")

private final String ftpUserName;

情况二:用该注解的类上面没有加注解,即不能被spring管理

public class FTPManagerService {

@Value("${ftpIP}")

private static String ftpIP;

}

情况三:类被new新建了实例,而没有使用@Autowired

public class FTPManagerService {

@Value("${ftpIP}")

private static String ftpIP;

}

public class Test{

/*错误用法*/

FTPManagerService f = new FTPManagerService ();

/*正确用法*/

@Autowired

FTPManagerService f2;

}

@Value取不到值的原因

在springboot中想获取配置文件中的值,一般的方法

@Value("${tag}")

private String tagValue;

但是取值时,有时这个tagvalue为NULL,

可能原因有

1.类没有加上@Component(或者@service等)

@Component //遗漏

class TestValue{

@Value("${tag}")

private String tagValue;

}

2.类被new新建了实例,而没有使用@Autowired

@Component

class TestValue{

@Value("${tag}")

private String tagValue;

}

class Test{

...

TestValue testValue = new TestValue()

正确方式

1.使用@Autowired注入

2.在controller层注值

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:21.Go面向对象-方法值与方法表达式
下一篇:30.Go文本文件处理-创建文件
相关文章

 发表评论

暂时没有评论,来抢沙发吧~