[英]Spring security and @Configuration order
我正在使用@Configuration
顺序处理一些春季问题(通常涉及春季安全性,但还涉及此问题的标记中提到的其他技术),其中某些事物的初始化“太早”或“太晚”。
举例说明: 自定义Tomcat时:配置默认Servlet处理时需要ServletContext。
答案通常是为某些bean创建单独的@Configuration
文件,然后开始工作。 我所得到的错误(堆栈跟踪)的性质通常并不响,这可能是我的错:)
有人可以指出我在哪里可以找到有关为什么创建单独的@Configuration
类有帮助以及如何确定@Configuration
类的顺序的信息吗?
在堆栈跟踪中要注意什么以识别此类问题的任何提示也将不胜感激。
它之所以有时有用的原因是因为它为Spring的bean创建顺序提供了其他选择。 一种(过度)简化的查看方式是说,如果将所有内容都放在一个文件中,则顺序由文件的内容确定。 而如果您将其分解,那么Spring可以探索其他选择,并且事情可能会以另一种更合适的顺序出现。 请注意,您可以对@Configuration
使用内部类和受包保护的类(只要它们是静态的),因此您无需创建新文件。
@Configuration
类也可以是自相矛盾的(例如,您要@Autowired
在同一单元中创建的某些内容-有时可以工作,有时不可以)。 同样,在大多数情况下,Spring所创建的组件(不是由您自己的代码明确创建的)通常需要尽早实例化。 Spring Boot必须在完全初始化ServletContext
之前创建Servlets
和Filters
,从而加剧了这种情况。
就堆栈跟踪而言,@ @Autowired
依赖项原来为空,这是一种气味。 同样在日志中,您可能会看到INFO级别的日志,指出某些bean“不适合进行后期处理”。 不能保证这是致命的(因此是INFO级别),但是如果您看到很多,则可能会遇到麻烦。
对于这种推理,我不知道任何规范的参考。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.