017 包扫描器和标记注解
一 .概述
在之前我们使用spring时,最常用的就是组件扫描器配合Bean标记注解整体进行Bean的注册.
xml形式:
<context:component-scan base-package="" />
我们配置基础包,spring会帮助我们将基础包下所有的类进行扫描,一旦发现有类被标记上了一下四个注解就会进行注册.
[1]@Controller
[2]@Service
[3]@Component
[4]Repository
现在我们使用注解模式,同样有一套可以替换上述配置的方案.
二 .使用注解完成扫描器
[1] 创建测试Bean
@Controller public class PersonController {}
@Service public class PersonService {}
@Repository public class PersonDAO {}
[2] 创建配置类
@Configuration @ComponentScan(basePackages="com.trek.springConfig.scan") public class ScanConfig {}
[3]创建测试类
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes= {ScanConfig.class}) public class ScanTest {@Autowiredprivate ApplicationContext context;@Testpublic void test() {String[] beanDefinitionNames = context.getBeanDefinitionNames(); for (String name : beanDefinitionNames) { System.out.println(name); } } }
查看运行结果:
scanConfig personController personDAO personService
我们发现我们实现了包扫描器加Bean的标记注解组合进行Bean的批量注册.
三 .包扫描器的高级功能
在之前我们使用包扫描的时候,可以指定进行扫描组件和排除指定组件.
我们将之前的配置类进行修改.
@Configuration @ComponentScan(basePackages = "com.trek.springConfig.scan", excludeFilters = {@Filter(type = FilterType.ANNOTATION, classes = { Controller.class }) }) public class ScanConfig {}
我们使用排除属性进行排除.
然后运行测试类:
scanConfig personDAO personService
我们可以发现@Controller被排除掉了.
我们使用指定注解进行扫描:
@Configuration @ComponentScan(basePackages = "com.trek.springConfig.scan", includeFilters = {@Filter(type = FilterType.ANNOTATION, classes = { Controller.class }) },useDefaultFilters=false) public class ScanConfig {}
千万需要注意的是,使用包含属性一定要声明不使用默认扫描行为.
转载于:https://www.cnblogs.com/trekxu/p/9094864.html
017 包扫描器和标记注解相关推荐
- 标记注解 java_【java】细说 JAVA中 标注 注解(annotation)
Java注解是附加在代码中的一些元信息,用于一些工具在编译.运行时进行解析和使用,起到说明.配置的功能. 注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用 下面我们来详细说说这个注解,到底是怎么 ...
- java扫描指定package注解_java获取包下被指定注解的类
方案一: 采用reflections 框架(此框架依赖com.google.guava) 2.项目依赖 org.reflections reflections 0.9.11 com.google.gu ...
- springboot切面AOP拦截父类或接口中标记注解的方法
一.注解的继承性回顾 被@Inherited元注解标注的注解标注在类上的时候,子类可以继承父类上的注解. 注解未被@Inherited元注解标注的,该注解标注在类上时,子类不会继承父类上标注的注解. ...
- 004_SpringMVC分层配置文件
一. Dao层 1. 添加spring和mybatis整合包 2. Mybatis必须的配置文件SqlMapConfig.xml, 空文件即可. 3. applicationContext-dao.x ...
- idea 使用maven 整合ssm框架
创建 maven 项目 刚创建好的 maven 项目结构 整合 SSM 框架后的项目结构 数据库环境 创建 mybatis 数据库,在 mybatis 数据库中创建 teacher 数据库表,然后在 ...
- 2022年Java应届生面试之Spring框架基础知识
前言:工作的原因,最近没有及时更新相关系列.很抱歉!在复习Spring框架的同时也别忘了j2ee的相关知识理论wo~ 大家好!我是JAVA 中的Spring框架,我是一个开源的容器性质的轻量级框架. ...
- SpringMVC整合mybatis(终结版)
ssm框架是目前web开发中最流行的框架之一,这个框架快捷方便,搭建完成后是很容易进行项目的开发的. 本文将使用idea作为开发工具,并使用maven进行项目管理,进行ssm框架的搭建. 1. 整合思 ...
- 淘淘商城项目day01
准备重新开始写一遍此项目,发现有时候光看会有很多细节没有注意到,或者转眼就忘了,所以以后每天都把今天学的东西都写下来,记录每一天的成长! 1.淘淘商城的技术选型 数据库:mysql Dao层:myba ...
- 小白学习spring第二天
第8节:Spring配置文件模块化 1.配置文件模块化的业务背景,为什么要进行配置文件模块化2.配置文件模块化的具体实现方式一: 创建多个并列的配置文件方式二: 创建一个主配置,多个从配置,主配置当中 ...
最新文章
- DP_knapsack
- 【转】C++中的字符串(String)和数值转换
- 【Java】《Java面向对象编程的三大特性》阅读笔记
- SQL Server中的零碎数据库还原
- 学习笔记大型《构建高性能web站点》
- 《大数据之路》阅读笔记--数据同步
- 如何VARCHART XGantt编写PDF文件
- 面试 — 海康威视(Android客户端开发)
- ad模数转换采集电压程序c语言,单片机怎么通过AD转换得到电压值
- android 连接已保存的wifi,手机连接WiFi显示已保存但是连接不上
- 从视觉AI应用案例,看AI落地的瓶颈在哪里?
- NLP分词使用总结--python HANLP
- 【web全景】web全景实现方案(转载)
- 室友利用一把王者的时间就学会了【C语言结构体内存对齐】
- 鸿蒙os正式版推送时间,鸿蒙OS正式版推送时间确定,游戏性能更强,流畅度稳定性均提升...
- 【owt-server】m88分支和m59-server
- C语言程序设计(第3版) 何钦铭 颜晖 主编
- 在Origin绘图和表格中插入Latex公式
- 企业微信微盘如何共享文件给外部联系人?
- [编辑器]KindEditor 是什么?