注解测试:如何使用注解(去掉配置文件)开发

新建MainConfig类

注解测试:新建MainTest2注解测试,用来测试//AnnoatationConfigApplicationContext: 注解配置来获取IOC容器

2.1 操作:新建cap2文件夹,新建Cap2MainConfig.java配置类

作用:指定要扫描的包

1,@ComponentScan(value="com.enjoy.cap2")表示扫描此目录下的包

2,建立测试用例方法;

2.2 新建Cap2MainConfig2配置类

作用:定制包扫描时的过滤规则

新建dao, service,controller

在Cap2MainConfig2加入配置: @Filter: 扫描规则

@ComponentScan(value="com.enjoy.cap2",includeFilters={     @Filter(type=FilterType.ANNOTATION,classes={Controller.class}),        @Filter(type=FilterType.ASSIGNABLE_TYPE,classes={BookService.class})

},useDefaultFilters=false) //默认是true,扫描所有组件,要改成false,使用自定义扫描范围

*/

//@ComponentScan value:指定要扫描的包

//excludeFilters = Filter[] 指定扫描的时候按照什么规则排除那些组件

//includeFilters = Filter[] 指定扫描的时候只需要包含哪些组件

//useDefaultFilters = false 默认是true,扫描所有组件,要改成false

//----扫描规则如下

//FilterType.ANNOTATION:按照注解

//FilterType.ASSIGNABLE_TYPE:按照给定的类型;比如按BookService类型

//FilterType.ASPECTJ:使用ASPECTJ表达式

//FilterType.REGEX:使用正则指定

//FilterType.CUSTOM:使用自定义规则,自已写类,实现TypeFilter接口

//FilterType.CUSTOM的例子,常用

先新增自定义过滤规则类:

在Cap2MainConfig申明

@ComponentScan(value="com.enjoy.cap2",includeFilters={

@Filter(type=FilterType.CUSTOM,classes={JamesTypeFilters.class})

},useDefaultFilters=false)

publicclassCap2MainConfig2 {}

1,新建Cap3MainConfig.java

2,没加@Scope之前, 默认的bean是单实例的. 新建 test01()方法测试如下:

返回true, 证明取到的是同一个person bean,只实例化了一次.

3, 加入@Scope(“prototype”) //多实例

prototype: 多实例:IOC容器启动并不会去调用方法创建对象放在容器中,而是                                                                  每次获取的时候才会调用方法创建对象,见test02

singleton: 单实例(默认):IOC容器启动会调用方法创建对象放到IOC容器中

以后每交获取就是直接从容器(理解成从map.get对象)中拿

request:  主要针对WEB应用,同一次请求创建一个实例

session:  同一个session创建一个实例(后面两个用得不多,了解即可

1,新建Cap4MainConfig.java

2,建立测试用例test01();

当在Cap4MainConfig加入@Lazy时,  只有获取anno.getBean时才会加载到IOC容器中

spring底层原理解析的更多相关文章

  1. Spring Cloud底层原理解析

    概述 毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术.不过大多数讲解还停留在对Spring Cloud功能使用的层面,其底层的很多原理,很多人可能并不知晓 ...

  2. git的核心命令使用和底层原理解析

    文章目录: GIT体系概述 GIT 核心命令使用 GIT 底层原理 一.GIT体系概述 GIT 与 svn 主要区别: 存储方式不一样 使用方式不一样 管理模式不一样 1.存储方式区别 GIT把内容按 ...

  3. 细数那些不懂Spring底层原理带来的伤与痛

    1. 什么是spring? Spring 是个Java企业级应用的开源开发框架.Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用.Spring 框架目标是简化Jav ...

  4. 细数不懂Spring底层原理带来的伤与痛

    原文链接:https://www.jianshu.com/p/c9de414221ac?utm_campaign=haruki&utm_content=note&utm_medium= ...

  5. 利用Redisson实现分布式锁及其底层原理解析

    Redis介绍 参考地址:https://blog.csdn.net/turbo_zone/article/details/83422215 redis是一个key-value存储系统.和Memcac ...

  6. Spring MVC原理解析

    SpringMVC Spring MVC的工作原理 ①客户端的所有请求都交给前端控制器DispatcherServlet来处理,它会负责调用系统的其他模块来真正处理用户的请求. ② Dispatche ...

  7. Spring Session原理解析

    前景提要: @EnableRedisHttpSession导入RedisHttpSessionConfiguration.classⅠ.被RedisHttpSessionConfiguration继承 ...

  8. spring boot 原理解析一(spring boot 基础特征)

    spring boot 提供了完整的介绍 文档:https://docs.spring.io/spring-boot/docs/2.2.2.RELEASE/reference/html/documen ...

  9. 从HBase底层原理解析HBASE列族不能设计太多的原因?

    在之前的文章<深入探讨HBASE>中,笔者详细介绍了: HBase基础知识(包括简介.表结构).系统架构.数据存储 WAL log和HBase中LSM树的应用 HBase寻址机制 mino ...

随机推荐

  1. ElasticSearch速学 - IK中文分词器远程字典设置

    前面已经对”IK中文分词器“有了简单的了解:  但是可以发现不是对所有的词都能很好的区分,比如:  逼格这个词就没有分出来. 词库 实际上IK分词器也是根据一些词库来进行分词的,我们可以丰富这个词库. ...

  2. mysql 查看索引

    查看索引 mysql> show index from tblname; mysql> show keys from tblname; · Table 表的名称. · Non_unique ...

  3. [ActionScript 3.0] as3启动QQ

    import flash.html.HTMLLoader; import flash.net.URLLoader; import flash.net.URLRequest; import flash. ...

  4. 【FAQ】调用接口序列化问题

    问题: Exception in thread "main" com.fasterxml.jackson.databind.JsonMappingException:Can not ...

  5. mxonline实战13,授课讲师列表页,详情页,index页面全局导航

    对应github地址:第13天   把teacher-list.html和teacher-detail.html拷贝过来   一. 授课讲师列表页   1. 修改html文件 把org-list.ht ...

  6. C语言数据结构之图的基本操作

    本博文是是博主在学习数据结构图的这一章知识时做的一些总结,代码运行环境:visual studio2017 纯C语言 ,当然掌握了方法,你也可以试着用其它的语言来实现同样的功能. 下面的程序主要实现了 ...

  7. docker安装Tomcat软件,部署项目

    1 搜索tomcat镜像 $ sudo docker search tomcat NAME DESCRIPTION STARS OFFICIAL AUTOMATED tomcat Apache Tom ...

  8. 44.oracle表空间的使用

    要给下属充分的发挥空间,要允许下属犯错,下属犯错自己能顶下来就顶着,不要盯得让下属觉得“这不是我的事,我只是个小打工的”,团建要放在首位.不可在下属面前“装B”,别人也不傻. Oracle数据库开创性 ...

  9. C#-WebForm-ajax状态保持

    cookies: ashx端赋值: context.Response.Cookies["Username"].Value = ""; 后台端加载: Respon ...

  10. mongodb 两台互为主从

    主机A [root@mysql_master zhxf]# cat docker-compose.yml version: '3' services: mongo_rs1: image: mongo: ...