- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章详谈@Autowired和static的关系由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
好几次有个同事因为把static用到Spring的@Autowired上,导致注入的对象一直报空指针,他一直找不到错误在哪里,来问我,其实我以前也不知道这个问题,但我根据Spring容器的特点判定,他调用的对象与注入的对象不是一个对象,就告诉他:static的加载顺序是在@Autowired之前;之后查资料才知道其实不是这样。。.
静态变量、类变量不是对象的属性,而是一个类的属性,所以静态方法是属于类(class)的,普通方法才是属于实体对象(也就是New出来的对象)的,spring注入是在容器中实例化对象,所以不能使用静态方法.
而使用静态变量、类变量扩大了静态方法的使用范围。静态方法在spring是不推荐使用的,依赖注入的主要目的,是让容器去产生一个对象的实例,然后在整个生命周期中使用他们,同时也让testing工作更加容易.
一旦你使用静态方法,就不再需要去产生这个类的实例,这会让testing变得更加困难,同时你也不能为一个给定的类,依靠注入方式去产生多个具有不同的依赖环境的实例,这种static field是隐含共享的,并且是一种global全局状态,Spring同样不推荐这样去做.
1
2
3
4
5
6
7
8
9
10
11
|
@Component
public
class
Test {
private
static
UserService userService;
@Autowired
public
Test(UserService userService) {
Test.userService = userService;
}
public
static
void
test() {
userService.test();
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
@Component
public
class
Test {
private
static
UserService userService;
@Autowired
private
UserService userService2;
@PostConstruct
public
void
beforeInit() {
userService = userService2;
}
public
static
void
test() {
userService.test();
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
@Component
@Slf4j
public
class
UserCookieInfoUtil {
private
static
RedisTemplate<String, String> redisTemplate;
private
static
JWTUtils jwtUtils;
@Autowired
public
UserCookieInfoUtil(JWTUtils jwtUtils, RedisTemplate<String, String> redisTemplate) {
UserCookieInfoUtil.jwtUtils = jwtUtils;
UserCookieInfoUtil.redisTemplate = redisTemplate;
}
public
static
Map<String, Object> getCookieInfo(String token) {
Map<String, Object> map =
new
HashMap<>();
try
{
String loginName = jwtUtils.getLoginName(token);
String info = redisTemplate.opsForValue().get(Constants.TOKEN_USER_INFO +
":"
+ loginName);
map = JSONObject.parseObject(info ==
null
?
""
: info, Map.
class
);
}
catch
(Exception e){
log.error(
"获取缓存中的登录信息失败:{}"
, e);
}
return
map;
}
}
|
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我.
原文链接:https://www.cnblogs.com/pangyangqi/p/10010866.html 。
最后此篇关于详谈@Autowired和static的关系的文章就讲到这里了,如果你想了解更多关于详谈@Autowired和static的关系的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
一、简介 负载均衡(Load Balance),简称 LB,就是将并发的用户请求通过规则后平衡、分摊到多台服务器上进行执行,以此达到压力分摊、数据并行的效果。常见的算法也有许多随机、轮询、加权等,今天
目录 @Autowired和static的关系 1、发生的场景 2、原理剖析 3、解决方案 1、
solr是一个独立的企业级搜索应用服务器,它对外提供类似于web-service的api接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的xml文件,生成索引;也可以通过http get
年关将至,对于大部分程序员来说,马上就可以闲下来一段时间了,然而在这个闲暇的时间里,唯有争论哪门语言更好可以消磨时光,估计最近会有很多关于java与.net的博文出现,我表示要作为一个吃瓜群众,静静
我是一名优秀的程序员,十分优秀!