gpt4 book ai didi

java - 跨 Java 包 Autowiring Spring Beans

转载 作者:搜寻专家 更新时间:2023-11-01 03:03:56 24 4
gpt4 key购买 nike

我试图将我的项目分成三个模块:核心、管理和用户,以便我可以通过核心共享公共(public)代码。问题是当我将所有东西都放在同一个包中时,我无法让 Spring 跨不同的主包获取 Autowiring 的 bean。

在 com.mickeycorp.core 包中,我有我希望管理和用户模块使用的模型、服务等。在 com.mickeycorp.admin 中是我的 WebApplicationStarter(扩展了 SpringBootServletInitializer),我有:

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
ctx.register(SpringConfiguration.class);
return application.sources(WebApplicationStarter.class);
}

我认为应该选择我的配置类,其中我有以下内容:

@Configuration
@ComponentScan("com.mickeycorp")
public class SpringConfiguration {

}

显然我误解了什么。我认为设置 ComponentScan 会让 Spring 扫描 com.mickeycorp 下的包以获取组件注释?

最佳答案

我走在正确的轨道上.. 添加 @ComponentScan 只是完成了三分之一并且是正确的但是它没有配置 Spring 来扫描其他类型 - 它只涵盖 @Component @Repository@Service@Controller 注释。我必须将以下内容添加到 pickup @Entity@Repository:

@EntityScan("com.mickeycorp.core")
@EnableJpaRepositories("com.mickeycorp.core")

在这种情况下也不需要重写 SpringApplicationBuilder,因为 SpringConfiguration 类是自动选取的。

引用资料:

Spring Docs: Entity Scan

Spring Docs: EnableJpaRepositories

关于java - 跨 Java 包 Autowiring Spring Beans,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29272203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com