文档章节

Spring中static变量不能@value注入的原因

 钟然千落
发布于 10/20 06:22
字数 390
阅读 35
收藏 5

 

今天本想使用@Value的方式使类中的变量获得yml文件中的配置值,然而一直失败,获得的一直为null。

类似于这样写的。

public class RedisShardedPool {
private static ShardedJedisPool pool;//sharded jedis连接池
@Value("redis.max.total")
private static Integer maxTotal;
……
}

后来发现是因为这个变量是static的,而spring不支持依赖注入值到静态变量。
然后看到有人通过setter注入实现,如下

@Component
public class TestValue {

public static String maxTotal;

@Value("${redis.max.total}")
public void setDatabase(String maxTotal) {
TestValue.maxTotal= maxTotal;
}
}

于是我也改成这种样子的,但是还是获得不到值,因为我没在类上加@Component注解(或者类似的注解),所以spring扫描不到,也就识别不出,@Value还是会得到null。由于我这个是工具类,里面都是static方法,调用时也都是调用类方法,所以也不需要申明为component,也不需要通过@Autowired或者@Resource调用。而且,由于这个类里面是static方法和属性,也不能通过调用其他非static的属性和方法的方式来获得值。故放弃这种实现,只好自己写一个读取配置文件的工具类,通过调用配置文件工具类类方法来解析配置文件中数据。

 

© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 47
码字总数 6729
作品 0
长宁
程序员
私信 提问
spring@value取不到值的几种情况

一,spring组件重写构造方法,在构造方法中引用@value为null 由于spring实例化顺序为先执行构造方法,再注入成员变量,所以序为先执行构造方法,再注入成员变量,所以ing实例化顺取值为null ...

兜里有佩
05/10
0
0
【springMVC基础】spring获取bean的几种方法

1、ApplicationContext对象 说明:Spring框架程序通过配置文件手工初始化Spring的情况。 2、通过Spring提供的工具类获取ApplicationContext对象 说明:通过ServletContext对象获取Applicati...

卯金刀GG
06/26
0
0
spring getbean 方法分析

在最近的项目中,有个地方我们不得不实用getBean的方法,自己从Spring context中获取bean进行数据库操作。 方法一(效率低,极易出现bug,不推荐使用): 刚刚开始的时候,我们使用这中方式,...

gerry_pang
2013/10/10
0
0
Spring整合redis(设置密码)完整版

博主在上个项目中使用了redis,开始使用的jedisPool连接池的方式进行整合,发现这样是不安全,调研了一下,选择了设置redis密码重新整合,总结经验如下: 1)导入Spring-redis的jar具体如下:...

小伟_乌牛
2017/10/30
0
0
Spring 常用的注解及“依赖注入”的实现

1、spring注解 @Controller 声明Action组件 @Service 声明Service组件 @Service("myMovieLister") @Repository 声明Dao组件 @Component 泛指组件, 当不好归类时. @RequestMapping("/menu") ......

沉淀人生
05/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

小白带你认识netty(二)之netty服务端启动(上)

上一章 中的标准netty启动代码中,ServerBootstrap到底是如何启动的呢?这一章我们来瞅下。 server.group(bossGroup, workGroup);server.channel(NioServerSocketChannel.class).optio...

天空小小
35分钟前
1
0
聊聊storm trident batch的分流与聚合

序 本文主要研究一下storm trident batch的分流与聚合 实例 TridentTopology topology = new TridentTopology(); topology.newStream("spout1", spout) .p......

go4it
昨天
3
0
3分钟总结Mybatis别名

1.系统内置别名: 把类型全小写(resultType/paramType) 2.给某个类起别名 2.1 alias=”自定义” <typeAliases> <typeAlias type="com.bjsxt.pojo.People" alias="peo"/> </typeAli......

KingFightingAn
昨天
2
0
JAVA设计模式之模板方法模式和建造者模式

一、前期回顾 上一篇《Java 设计模式之工厂方法模式与抽象工厂模式》介绍了三种工厂模式,分别是工厂方法模式,简单工厂方法模式,抽象工厂模式,文中详细根据实际场景介绍了三种模式的定义,...

木木匠
昨天
8
0
C中的宏的使用(宏嵌套/宏展开/可变参数宏)

基本原则: 在展开当前宏函数时,如果形参有#或##则不进行宏参数的展开,否则先展开宏参数,再展开当前宏。 #是在定义两边加上双引号 #define _TOSTR(s) #sprintf(_TOSTR(test ABC))pr...

SamXIAO
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部