我是 CAS 代码库的新手。
真的很感谢一些指点吗?
初始化的 cas 覆盖项目来自 https://apereo.github.io/cas/development/installation/WAR-Overlay-Initializr.html
我正在尝试使用注释@SpringBootApplication添加自己的类
https://github.com/apereo/cas-overlay-template/tree/master/src/main,以便它扫描我的包中的bean初始化和控制器类,以便我可以覆盖cas覆盖的功能。
https://github.com/apereo/cas-overlay-template/tree/master/src/main
我在这里修改了主入口类https://github.com/apereo/cas-overlay-template/blob/master/gradle/springboot.gradle#L81
我可以在日志中看到这一点
2025-01-18 08:48:11,371 调试 [org.springframework.boot.devtools.restart.Restarter] -
但是为什么它不扫描其他包裹。
我错过了什么吗
问题是在CAS版本7中,作者(据我所知悄悄地)决定禁用Spring对带注释组件的自动扫描/发现,可能是出于性能原因。相反,CAS 现在依赖于Spring 的组件索引器。尽管看起来它的所有组件仍然是通过 @Bean
方法在 Java 中创建的,所以无论如何都不应该对 CAS 自己的组件进行组件扫描或索引。来源:
CAS 7.0.0,如何扫描自己创建的bean,并由spring管理
因此,解决方案要么像 CAS 那样创建您的组件(无论是RestController
还是其他组件),即在您自己的 Java Spring 配置类中(记录在扩展 CAS 配置中)。 或者,尝试将组件类的名称放入项目中的
META-INF/spring.components
文件中,您可能希望使用上面链接的 SO 页面中讨论的 Spring 索引器工具来实现自动化。该文件中一行的当前格式似乎类似于
org.example.YourComponentClass=org.springframework.stereotype.Component
(
=
符号后面的值通常可能不同)。