首页 > 编程知识 正文

Spring boot引入配置文件,spring读取配置文件

时间:2023-05-06 17:43:11 阅读:198629 作者:3338

@SpringBootApplication注解标注的类会默认以这个类为根目录扫描下面的所有带注解的类。那么如果我们的类不想放在这个@SpringBootApplication注解标注的类为根目录的类下面,而是放到其他路径中,Spring boot默认是扫描不到的,这个时候就需要我们另外引入那些类才可以。Spring boot提供了2个注解给我们@Import和@ComponentScan

@Import源代码如下,可以看到我们传递Class数组,可以传递多个配置类,用在@SpringBootApplication注解的类中即可

@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Import { Class<?>[] value();}

那么对于@Import需要每个配置类都手动添加,所以可以使用@ComponentScan注解定义扫描规则,扫描指定的包路径下的所有文件。
@ComponentScan源代码如下,可以看到除了指定扫描包之外,我们还可以另外定义其他属性。例如:resourcePattern定义规则。includeFilters定义包含过滤器。excludeFilters定义不用包含的文件过滤器等。
 

@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.TYPE})@Documented@Repeatable(ComponentScans.class)public @interface ComponentScan { @AliasFor("basePackages") String[] value() default {}; @AliasFor("value") String[] basePackages() default {}; Class<?>[] basePackageClasses() default {}; Class<? extends BeanNameGenerator> nameGenerator() default BeanNameGenerator.class; Class<? extends ScopeMetadataResolver> scopeResolver() default AnnotationScopeMetadataResolver.class; ScopedProxyMode scopedProxy() default ScopedProxyMode.DEFAULT; String resourcePattern() default "*.class"; boolean useDefaultFilters() default true; ComponentScan.Filter[] includeFilters() default {}; ComponentScan.Filter[] excludeFilters() default {}; boolean lazyInit() default false; @Retention(RetentionPolicy.RUNTIME) @Target({}) public @interface Filter { FilterType type() default FilterType.ANNOTATION; @AliasFor("classes") Class<?>[] value() default {}; @AliasFor("value") Class<?>[] classes() default {}; String[] pattern() default {}; }} 关注微信公众号(程序员小兔)不定期分享技术

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。