gpt4 book ai didi

java - @ComponentScan 在 Spring Boot AutoConfiguration 类中不起作用?

转载 作者:IT老高 更新时间:2023-10-28 13:45:52 25 4
gpt4 key购买 nike

我正在尝试创建一个新的启动器。我有一个业务模块,比如 ProjectManager,其中包含一些用 @Component 注释的类。按照教程,我创建了一个自动配置模块,它包含一个 AutoConfiguration 类。首先,我尝试使用 @ComponentSan 在我的业务模块中查找 bean。

@ComponentScan(value = {"com.foo.project"})
@ConditionalOnClass({Project.class})
@Configuration
public class ProjectAutoConfiguration {
....

}

但它不起作用。我必须添加额外的配置类如下:

@Configuration
@ComponentScan(value = {"com.foo.project"})
@MapperScan(value = {"com.foo.project"})
public class ProjectConfig {
}

然后将其导入 AutoConfiguration 类,如下所示:

@Import(ProjectConfig.class)
@ConditionalOnClass({Project.class})
@Configuration
public class ProjectAutoConfiguration {
....

}

这行得通。但根据 Spring doc .

auto-configuration is implemented with standard @Configuration classes

所以我的问题是,为什么 @ComponentScan 在这里不起作用?我做错了什么吗?还是设计使然?

最佳答案

您必须在主类中使用 compentscan 注释。这是一个示例代码:

@SpringBootApplication
@ComponentScan("com.foo.project")
public class MainApplication extends SpringBootServletInitializer {

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(MainApplication.class);
}

public static void main(String[] args) {
new MainApplication().configure(new SpringApplicationBuilder(MainApplication.class)).run(args);
}
}

干杯

关于java - @ComponentScan 在 Spring Boot AutoConfiguration 类中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38474382/

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