我正在Kotlin中设置一个带有Spring Security的登录支持项目。我是Sping Boot 的新手,所以评论可能会有帮助。我遇到了Spring Boot没有扫描我的@Configuration
类并注入其中定义的@Bean
的问题。但是,它在@SpringBootApplication
类中识别出了相同的@Bean
。
我没有使用WebSecurityConfigurerAdapter
,因为它现在已被弃用。
使用logging.level.org.springframework=DEBUG
时,我可以确认Sping Boot 只在使用@SpringBootApplication
时识别bean。而在使用@Configuration
时,它没有找到bean。
我不希望bean在那里。我想使用@Configuration
将bean分离到它自己的配置文件中,在一个子包中。我该怎么做呢?
下面是调试时找到的bean的屏幕截图,bean是在@SpringBootApplication
中定义的。
这里有不同的相关类定义:
主类
@SpringBootApplication
class DemoApplication {
// @Bean // <--- this bean is recognized
// fun pilterChain(http: HttpSecurity): SecurityFilterChain {
// http.authorizeRequests().anyRequest().anonymous().and().formLogin().and().httpBasic()
// return http.build()
// }
}
fun main(args: Array<String>) {
runApplication<DemoApplication>(*args)
}
控制器类
@RestController
class MessageResource {
@GetMapping
fun index(): String = "Hello World"
}
子包中的SecurityConfig.kt
@Configuration
class SecurityConfig {
@Bean // <--- this bean is not recognized
fun pilterChain(http: HttpSecurity): SecurityFilterChain {
http.authorizeRequests().anyRequest().anonymous().and().formLogin().and().httpBasic()
return http.build()
}
}
1条答案
按热度按时间8i9zcol21#
这是因为您的
SecurityConfig
所在的套件与您的DemoApplication
不是同一个套件,也不是DemoApplication
套件的子套件。要解决这个问题,请将
SecurityConfig
的包移到DemoApplication
的包中,这样它就变成了一个子包,应该可以正常工作。