博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring注解第02课 包扫描@ComponentScan、@ComponentScans
阅读量:5906 次
发布时间:2019-06-19

本文共 2690 字,大约阅读时间需要 8 分钟。

1.配置文件形式:

  <context:component-scan base-package="com.atguigu" />

  spring会扫描此包下的@Service @Repository  @Component @Autoware @Resource 等注解

2.注解形式

  在配置文件注解类(@Configuration)上声明@ComponentScans,里面包含多个@ComponentScan,

  或是只声明@ComponentScan

package com.atguigu.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.FilterType;import org.springframework.context.annotation.ComponentScan.Filter;import org.springframework.context.annotation.ComponentScans;import com.atguigu.bean.Person;//配置类==配置文件@Configuration  //告诉Spring这是一个配置类@ComponentScans(        value = {                @ComponentScan(value="com.atguigu",includeFilters = {/*                        @Filter(type=FilterType.ANNOTATION,classes={Controller.class}),                        @Filter(type=FilterType.ASSIGNABLE_TYPE,classes={BookService.class}),*/                        @Filter(type=FilterType.CUSTOM,classes={MyTypeFilter.class})                },useDefaultFilters = false)            }        )//@ComponentScan  value:指定要扫描的包//excludeFilters = Filter[] :指定扫描的时候按照什么规则排除那些组件//includeFilters = Filter[] :指定扫描的时候只需要包含哪些组件//FilterType.ANNOTATION:按照注解//FilterType.ASSIGNABLE_TYPE:按照给定的类型;//FilterType.ASPECTJ:使用ASPECTJ表达式//FilterType.REGEX:使用正则指定//FilterType.CUSTOM:使用自定义规则public class MainConfig {        //给容器中注册一个Bean;类型为返回值的类型,id默认是用方法名作为id    @Bean("person")    public Person person01(){        return new Person("lisi", 20);    }}

3.自定义过滤器(用于注解)

package com.atguigu;import java.io.IOException;import org.springframework.core.io.Resource;import org.springframework.core.type.AnnotationMetadata;import org.springframework.core.type.ClassMetadata;import org.springframework.core.type.classreading.MetadataReader;import org.springframework.core.type.classreading.MetadataReaderFactory;import org.springframework.core.type.filter.TypeFilter;public class MyTypeFilter implements TypeFilter {    public boolean match(MetadataReader metadataReader,            MetadataReaderFactory metadataReaderFactory) throws IOException {        //获取当前类的注解信息        AnnotationMetadata annotationMetadata = metadataReader.getAnnotationMetadata();        //获取当前类的类信息        ClassMetadata classMetadata = metadataReader.getClassMetadata();                System.out.println("------------->" + classMetadata.getClassName());        //资源信息        Resource resource = metadataReader.getResource();                if(classMetadata.getClassName().contains("Controller")){            return true;        }        return false;    }}

 

转载于:https://www.cnblogs.com/guchunchao/p/9691921.html

你可能感兴趣的文章
【设计模式】Template Method模式
查看>>
Intel® Ethernet Connection I217-V 网卡驱动(win10 ,2012)
查看>>
android 26 设置项目有多个入口Activity。
查看>>
每天一个linux命令(12):more命令
查看>>
家庭洗车APP --- Androidclient开展 之 网络框架包介绍(一)
查看>>
挖掘算法(1)朴素贝叶斯算法
查看>>
Spring使用Cache、整合Ehcache
查看>>
Index/Common目录下文件
查看>>
Bash 什么时候会给 HOME 赋初始值
查看>>
POJ 3522 Slim Span 最小差值生成树
查看>>
[AlwaysOn Availability Groups]DMV和系统目录视图
查看>>
nginx js、css多个请求合并为一个请求(concat模块)
查看>>
Java系列:《Java核心技术 卷一》学习笔记,chapter11 记录日志
查看>>
python --装饰器
查看>>
zoj 1008 Gnome Tetravex
查看>>
fusionchart实现ZoomLine 资源 破解版 出口能力
查看>>
Art-Directing SVG图像viewBox属性
查看>>
Java面试题:Servlet是线程安全的吗?
查看>>
HDU 4932 贪心
查看>>
apache开源项目-- Velocity
查看>>