在许多情况下,spring要求您在用spring注入属性后,先查询数据库以初始化自己的属性。 这需要@PostConstruct。
网上说spring是在注入属性后再执行@PostConstruct的方法,但我在使用时,向注入其中的service报告了nullpointer。
随后,您发现在使用service时必须使用service中的spring注入属性。 但是,此属性的初始化写在setter中,如果最后尝试将setter方法注入更改为直接注入属性,上面的PostConstruct将不再抛出空指针异常。 因此,推测对spring属性的注入,AutoWired直接写入属性的注入比setter方式快。
上诉测试容易获得顺序: Autowired直接通过-PostConstruct - setter方式注入属性
正好踩了这个洞,网上也没有说明,所以我会记录下来。 之后,遇到这个洞也很方便。