[英]Spring Boot - Spring security @ComponentScan or @Import
[英]Spring boot @ComponentScan vs @Import
我和我的朋友讨论了@ComponentScan
和@Import
。 哪一个更好? 我们有两个不同的想法。
@ComponentScan
:易于使用,从组件扫描中导入所有 bean。@Import
:您需要知道要使用什么组件,无需扫描所有组件。你的想法怎么样? 哪一个更适合您使用?
谢谢!
@Import
用于导入 Java 配置类,通常用@Configuration/@Component
标记。 因此,如果您在此组件中有一个 bean,Spring 会将其加载到应用程序上下文中。 您可以只输入组件的名称,或者 class 和 Spring 会为您提取它。
但是,通过使用@ComponentScan
,您可以告诉应用程序要扫描哪些包以查找 java 类使用@Configuration/@Component
注释(或 @Component @Component's
任何子注释,如@Service
或@Repository
等)并将它们全部加载到应用程序上下文,以便它们可以在需要时自动装配。 如果有需要填充的内部实例,Spring 将处理它。
您可以在各自的文档页面上阅读有关@Import和@ComponentScan的更多信息。
这个页面很好地解释了差异。
@ComponentScan 扫描并搜索在 basePackageClasses 或 basePackages 选项下指定的包/类中的任何 bean,以配置为准。 此选项还允许您过滤一些您不希望包含在搜索中的类。
@Import 就像将一个 java 配置合并到另一个配置中。 例如:
@Configuration
@ComponentScan(basePackages="com.stackoverflow")
public class Dbconfig {
@Bean
public Datasource dSource(){
return new Datasource()
}
}
@Configuration
@Import(Dbconfig.class)
@ComponentScan(basePackages="org.hellospring")
public class AppConfig {
...// beans
}
因此,在这里,如果我们检查 AppConfig class,它将包括在 Dbconfig 配置 class 中注册的所有 bean,包括com.stackoverflow
的内部。
+
它将包括 AppConfig class 中的所有 bean 和 package org.hellospring
下的 bean
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.