Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring—在安全配置中定义的Bean创建顺序_Java_Spring_Spring Boot_Spring Security - Fatal编程技术网

Java Spring—在安全配置中定义的Bean创建顺序

Java Spring—在安全配置中定义的Bean创建顺序,java,spring,spring-boot,spring-security,Java,Spring,Spring Boot,Spring Security,在Spring引导和Spring安全应用程序中,我有两种安全配置。所以有两个类用@Configuration和 @EnableWebSecurity和扩展WebSecurityConfigurerAdapter 在配置一中,我们称之为foo,我创建了两个Bean(用@Bean注释)。这两个bean都是AuthenticationProvider的。其中一个标记为@Primary和@ConditionalOnProperty。如果出于测试目的设置了某些属性,它将替换其他身份验证提供程序 在另一种配

在Spring引导和Spring安全应用程序中,我有两种安全配置。所以有两个类用
@Configuration
@EnableWebSecurity
和扩展
WebSecurityConfigurerAdapter

在配置一中,我们称之为foo,我创建了两个Bean(用
@Bean
注释)。这两个bean都是AuthenticationProvider的。其中一个标记为
@Primary
@ConditionalOnProperty
。如果出于测试目的设置了某些属性,它将替换其他身份验证提供程序

在另一种配置中,我们称之为bar,我通过使用AuthenticationProvider类型的
@Autowired
注释字段来请求其中一个AuthenticationProvider

我已经用
@Order(1)
注释了foo配置,以指示它应该首先运行。条形配置具有
@Order(2)
。但是,应用程序不能以这种方式启动。Spring告诉我它无法创建bar配置,因为请求的AuthenticationProviderbean仍在创建中。这使我困惑。我认为应该已经创建了foo配置,因为它具有更高的优先级?为什么豆子还不可用

如果我用
@DependsOn(“fooConfiguration”)
注释条配置,那么它就可以工作了。但我真的不明白为什么。另外:使用
@DependsOn
代码是否有味道?我正在做的事情是否非正统(将一个配置的bean注入另一个配置)?

@Order(…)
注释置于生成bean的方法之上(在
@bean
注释旁边)。确保它们都具有与返回类型相同的接口


除了提供精确的
int
值之外,您还可以使用interface

不确定配置是否使用了
@Order
。你看过
@AutoConfigureBefore
@AutoConfigureAfter
了吗?@Mike嘿,谢谢你的输入!我非常确定这个注释是用于配置的,我在互联网上读到的许多资源中都推荐使用它,我个人已经看到它在安全配置中起作用。如果您希望有多个配置需要以特殊顺序配置过滤器链,这一点至关重要。另外,我认为常规配置和spring所说的自动配置之间有区别,对吗?我不认为它用于类本身,而是如下面的答案所指出的单个bean。
@EnabledAutoConfiguration
注释只是指示Spring尝试配置您需要的bean定义;据我所知,没有自动配置与常规配置之比。@Mike它肯定用于类本身,您可以在spring文档中找到这一点:(在6.10多HttpSecurity下)。但是看起来安全模块已经为这个注释开发了一些自定义逻辑,它只影响生成的过滤器链,并且在bean创建时不影响。但我找不到一个明确的说法,这似乎并不能解决问题。同样的异常也会发生。我认为这个配置有两个相同类型的bean这一事实与这个问题并不相关。我把它包括在内,因为这正是我正在处理的案件。我应该在发帖之前检查一下——我的错。抱歉搞混了!