繁体   English   中英

Spring安全性和@Configuration顺序

[英]Spring security and @Configuration order

我正在使用@Configuration顺序处理一些春季问题(通常涉及春季安全性,但还涉及此问题的标记中提到的其他技术),其中某些事物的初始化“太早”或“太晚”。

举例说明: 自定义Tomcat时:配置默认Servlet处理时需要ServletContext。

答案通常是为某些bean创建单独的@Configuration文件,然后开始工作。 我所得到的错误(堆栈跟踪)的性质通常并不响,这可能是我的错:)

有人可以指出我在哪里可以找到有关为什么创建单独的@Configuration类有帮助以及如何确定@Configuration类的顺序的信息吗?

在堆栈跟踪中要注意什么以识别此类问题的任何提示也将不胜感激。

它之所以有时有用的原因是因为它为Spring的bean创建顺序提供了其他选择。 一种(过度)简化的查看方式是说,如果将所有内容都放在一个文件中,则顺序由文件的内容确定。 而如果您将其分解,那么Spring可以探索其他选择,并且事情可能会以另一种更合适的顺序出现。 请注意,您可以对@Configuration使用内部类和受包保护的类(只要它们是静态的),因此您无需创建新文件。

@Configuration类也可以是自相矛盾的(例如,您要@Autowired在同一单元中创建的某些内容-有时可以工作,有时不可以)。 同样,在大多数情况下,Spring所创建的组件(不是由您自己的代码明确创建的)通常需要尽早实例化。 Spring Boot必须在完全初始化ServletContext之前创建ServletsFilters ,从而加剧了这种情况。

就堆栈跟踪而言,@ @Autowired依赖项原来为空,这是一种气味。 同样在日志中,您可能会看到INFO级别的日志,指出某些bean“不适合进行后期处理”。 不能保证这是致命的(因此是INFO级别),但是如果您看到很多,则可能会遇到麻烦。

对于这种推理,我不知道任何规范的参考。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM