java - Spring Gradle 库中的 Controller / RestController
问题描述
我想使用我编写的 Gradle 库中的控制器,但它没有在我使用该库的应用程序中自动装配。
当我@Import(ControllerName.class)
在正在运行的应用程序的 ApplicationClass 上使用它时它确实有效,但是我必须手动从库中导入每个类
@ComponentScan
不起作用,从我读到的内容来看,它不起作用,@Controller
而且@RestController
无论如何只有@Bean
,@Service
和@Component
.
这是库中的控制器类(我省略了业务逻辑)
@Controller
public class FrontendController {
@GetMapping("/login")
public String showLoginForm(){
return "login";
}
//some other endpoints
}
这是目前我的主应用程序中的应用程序类:
@SpringBootApplication
@ComponentScan(basePackages = {"com.myapp.demo", "com.myapp.login-lib"})
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
解决方案
我发现了我的错误。在我的库中,我(显然)不需要具有公共静态 void main 的类,但我需要从库中正确自动装配内容的是具有 @Configuration 的类。
因为我也有存储库和实体,所以我还需要在库中定义它们的包 -> 所以我向库中添加了一个类,如下所示:
@Configuration
@ComponentScan(basePackages = {"com.myapp.login-lib"})
@EnableJpaRepositories(basePackages = {"com.myapp.login-lib"})
@EntityScan(basePackages = {"com.myapp.login-lib"})
public class BaseConfiguration {
}
然后在我使用库的应用程序中,我只需要导入该配置:
import com.myapp.login-lib.BaseConfiguration;
@SpringBootApplication
@Import(BaseConfiguration.class)
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
推荐阅读
- powershell - Powershell - 禁用所有 cmdlet,例如 Invoke-WebRequest
- python - bash 脚本中 Python 命令的 Visual Studio 调试器
- html - 如何将 Modal 创建为视图并从 MVC 共享文件夹中的 Header 调用它
- python - TypeError:“float”类型的对象没有用于情感分析的 len()
- authentication - 角度登录问题
- c# - 如何为 ModelViusal3D 对象(模型)设置动画?
- python-3.x - 使用 pyopenssl 创建自签名证书时出错
- processing - 项目在处理运行时有效,但在我导出到 .exe 文件时无效
- python-3.x - 如何为每个依赖项指定 requirements.txt 的安装目录;不要将所有要求安装在一个目录中
- python - 在同一个事件循环中运行 Qt 和 Websockets 服务器