我正在尝试创建一个新的启动器。我有一个业务模块,例如ProjectManager,其中包含一些用@Component注释的类。在学习完本教程之后,我创建了一个自动配置模块,其中包含一个自动配置类。首先,我尝试使用@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 {
....
}
那个有效。但是根据春季文件。
自动配置是通过标准@Configuration类实现的
所以我的问题是,为什么@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);
}
}
干杯
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句