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中配置的属性名") 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;
public TokenUtil() { }
@PostConstruct public void init() { tokenUtil = this; tokenUtil.tokenRepository = this.tokenRepository; }
|