Java Spring安全性和@Configuration顺序
我处理了几个spring问题(通常涉及spring安全性,但在这个问题的标签中也提到了其他技术),使用了Java Spring安全性和@Configuration顺序,java,spring-mvc,spring-security,spring-boot,Java,Spring Mvc,Spring Security,Spring Boot,我处理了几个spring问题(通常涉及spring安全性,但在这个问题的标签中也提到了其他技术),使用了@Configuration排序,其中有些东西初始化得“太早”或“太迟” 举个例子: 答案通常是为一些bean创建单独的@Configuration文件,然后开始工作。我收到的错误(stacktraces)的性质通常不会引起注意,这可能是我的错:) 有人能告诉我在哪里可以找到关于为什么创建单独的@Configuration类有帮助,以及如何确定@Configuration类的顺序的信息吗 任何
@Configuration
排序,其中有些东西初始化得“太早”或“太迟”
举个例子:
答案通常是为一些bean创建单独的@Configuration
文件,然后开始工作。我收到的错误(stacktraces)的性质通常不会引起注意,这可能是我的错:)
有人能告诉我在哪里可以找到关于为什么创建单独的@Configuration
类有帮助,以及如何确定@Configuration
类的顺序的信息吗
任何关于在stacktrace中注意什么以识别这类问题的提示都将非常受欢迎。它有时之所以有用,是因为它为Spring提供了bean创建顺序的替代选项。一种(过于)简化的方法是,如果你把所有东西都放在一个文件中,那么顺序是由文件的内容决定的。然而,如果你打破它,那么Spring可以探索其他选项,事情可以按照另一个更合适的顺序进行。请注意,您可以为
@Configuration
使用内部类和包保护类(只要它们是静态的),因此不需要创建新文件
@Configuration
类也可能是自相矛盾的(例如,您希望@Autowired
在同一个单元中创建的东西-有时有效,有时无效)。此外,在这些情况下,通常需要提前实例化由Spring创建的组件(不是由您自己的代码显式创建的)。Spring Boot需要在ServletContext
完全初始化之前创建Servlets
和Filters
,这必然会加剧这种情况
就堆栈跟踪而言,结果为空的@Autowired
依赖项是一种气味。此外,在日志中,您可能会看到信息级别的日志,其中指出某些bean“不适合后期处理”。这并不能保证是致命的(因此是信息级别),但如果你看到很多,你可能会遇到麻烦
我不知道这种推理有任何规范的参考