一 .概述

在之前我们使用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 包扫描器和标记注解相关推荐

  1. 标记注解 java_【java】细说 JAVA中 标注 注解(annotation)

    Java注解是附加在代码中的一些元信息,用于一些工具在编译.运行时进行解析和使用,起到说明.配置的功能. 注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用 下面我们来详细说说这个注解,到底是怎么 ...

  2. java扫描指定package注解_java获取包下被指定注解的类

    方案一: 采用reflections 框架(此框架依赖com.google.guava) 2.项目依赖 org.reflections reflections 0.9.11 com.google.gu ...

  3. springboot切面AOP拦截父类或接口中标记注解的方法

    一.注解的继承性回顾 被@Inherited元注解标注的注解标注在类上的时候,子类可以继承父类上的注解. 注解未被@Inherited元注解标注的,该注解标注在类上时,子类不会继承父类上标注的注解. ...

  4. 004_SpringMVC分层配置文件

    一. Dao层 1. 添加spring和mybatis整合包 2. Mybatis必须的配置文件SqlMapConfig.xml, 空文件即可. 3. applicationContext-dao.x ...

  5. idea 使用maven 整合ssm框架

    创建 maven 项目 刚创建好的 maven 项目结构 整合 SSM 框架后的项目结构 数据库环境 创建 mybatis 数据库,在 mybatis 数据库中创建 teacher 数据库表,然后在 ...

  6. 2022年Java应届生面试之Spring框架基础知识

    前言:工作的原因,最近没有及时更新相关系列.很抱歉!在复习Spring框架的同时也别忘了j2ee的相关知识理论wo~ 大家好!我是JAVA 中的Spring框架,我是一个开源的容器性质的轻量级框架. ...

  7. SpringMVC整合mybatis(终结版)

    ssm框架是目前web开发中最流行的框架之一,这个框架快捷方便,搭建完成后是很容易进行项目的开发的. 本文将使用idea作为开发工具,并使用maven进行项目管理,进行ssm框架的搭建. 1. 整合思 ...

  8. 淘淘商城项目day01

    准备重新开始写一遍此项目,发现有时候光看会有很多细节没有注意到,或者转眼就忘了,所以以后每天都把今天学的东西都写下来,记录每一天的成长! 1.淘淘商城的技术选型 数据库:mysql Dao层:myba ...

  9. 小白学习spring第二天

    第8节:Spring配置文件模块化 1.配置文件模块化的业务背景,为什么要进行配置文件模块化2.配置文件模块化的具体实现方式一: 创建多个并列的配置文件方式二: 创建一个主配置,多个从配置,主配置当中 ...

最新文章

  1. DP_knapsack
  2. 【转】C++中的字符串(String)和数值转换
  3. 【Java】《Java面向对象编程的三大特性》阅读笔记
  4. SQL Server中的零碎数据库还原
  5. 学习笔记大型《构建高性能web站点》
  6. 《大数据之路》阅读笔记--数据同步
  7. 如何VARCHART XGantt编写PDF文件
  8. 面试 — 海康威视(Android客户端开发)
  9. ad模数转换采集电压程序c语言,单片机怎么通过AD转换得到电压值
  10. android 连接已保存的wifi,手机连接WiFi显示已保存但是连接不上
  11. 从视觉AI应用案例,看AI落地的瓶颈在哪里?
  12. NLP分词使用总结--python HANLP
  13. 【web全景】web全景实现方案(转载)
  14. 室友利用一把王者的时间就学会了【C语言结构体内存对齐】
  15. 鸿蒙os正式版推送时间,鸿蒙OS正式版推送时间确定,游戏性能更强,流畅度稳定性均提升...
  16. 【owt-server】m88分支和m59-server
  17. C语言程序设计(第3版) 何钦铭 颜晖 主编
  18. 在Origin绘图和表格中插入Latex公式
  19. 企业微信微盘如何共享文件给外部联系人?
  20. [编辑器]KindEditor 是什么?

热门文章

  1. Apache+Tomcat中支持“UTF-8”编码的中文地址
  2. aspx页面处理阶段
  3. windows设置自动清理log
  4. [周译见] C# 7 中的模范和实践
  5. MySQL原生HA方案 – Fabric体验之旅
  6. Ubuntu常用安装源
  7. 网页动画结束判断事件
  8. 【Android AAR】1 分钟不用改任何代码在 Eclipse 中使用 AAR
  9. PHP - 如何解决中文乱码
  10. SQL Server 2012笔记分享-29:日志文件的工作方式