spring非controller配置注解获取为空

1. 在非controller中用@Autowired的方式声明一个@Component注解的对象时,对象属性为空

后发现时对象本身为空造成,

可能的原因: 网上百度了很久,原因可能在于我的utils包的类和controller的类不是同一个上下文。

关于@PostConstruct:被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器调用一次,类似于Serclet的inti()方法。被@PostConstruct修饰的方法会在构造函数之后,init()方法之前运行。

以下为修改后的示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@Component(prefix="yml中配置的属性名")  // 关键1,将该工具类注册为组件,   加粗!!!
public class TokenUtil {
@Autowired
private TokenRepository tokenRepository;

@Autowired
private TokenService tokenService;

private static SimpleDateFormat df =
new SimpleDateFormat("yyyy-MM-dd");//设置日期格式

private int dueTime = 86400000;

public static TokenUtil tokenUtil; // 关键2

public TokenUtil() {
}

// 关键3
@PostConstruct
public void init() {
tokenUtil = this;
tokenUtil.tokenRepository = this.tokenRepository;
}