spring自定义注解

Spring Framework 组件注册 之 FactoryBean

陌路散爱 提交于 2020-02-29 06:41:25
Spring Framework 组件注册 之 FactoryBean 前言 前两篇文章介绍了如何使用 @Component , @Import 注解来向spring容器中注册组件(javaBean),本文将介绍通过 FactoryBean 接口继续向spring容器中注册组件。可能第一印象是spring中 BeanFactory 接口,但是这里确实说的是 FactoryBean 。 推荐阅读 Spring Framework 组件注册 之 @Import Spring Framework 组件注册 之 @Component FactoryBean 与 BeanFactory 根据接口名称,我们也可以简单看出两者的区别 FactoryBean:它是spring中的一个Bean,只不过它是一个特殊的Bean(工厂Bean),我们可以通过它来自定义生产需要的普通JavaBean BeanFactory:它是spring的Bean工厂,是spring最为重要的接口之一,spring通过此接口获取,管理容器中的各个Bean 接下来将进入本文正题,如何通过 FactoryBean 接口向spring容器中注册组件 FactoryBean简单使用 正如前面说的,FactoryBean也是spring中的一个Bean,但是它又是一个特殊的Bean,它的存在是为了生产其他的JavaBean

spring IOC 核心流程分析

馋奶兔 提交于 2020-02-29 03:18:22
1、IOC 核心接口 IOC 中最主要的有两个接口,一个是BeanFactory ,一个是ApplicationContext 。 BeanFactory 作为IOC容器的顶层接口,提供了对容器bean 的一些基础操作如getBean(xxx),containsBean(xxx),isSingleton(String name),getType(String name)。 ApplicationContext 继承自BeanFactory接口,除了包含BeanFactory的所有功能之外,在国际化支持、资源访问(如URL和文件)、事件传播等方面进行了良好的支持。 2、IOC 核心流程 AbstractApplicationContext.refresh() @Override public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { // Prepare this context for refreshing. prepareRefresh(); /* * 1、刷新子类BeanFactory * 2、创建Beanfactory实例 * beanFactory = new

spring启动流程

自古美人都是妖i 提交于 2020-02-29 03:09:54
转载:https://www.cnblogs.com/luoluoshidafu/p/6442055.html 首先,对于一个web应用,其部署在web容器中,web容器提供其一个全局的上下文环境,这个上下文就是ServletContext,其为后面的spring IoC容器提供宿主环境; 其次,在web.xml中会提供有contextLoaderListener。在web容器启动时,会触发容器初始化事件,此时contextLoaderListener会监听到这个事件,其contextInitialized方法会被调用,在这个方法中,spring会初始化一个启动上下文,这个上下文被称为根上下文,即WebApplicationContext,这是一个接口类,确切的说,其实际的实现类是XmlWebApplicationContext。这个就是spring的IoC容器,其对应的Bean定义的配置由web.xml中的context-param标签指定。在这个IoC容器初始化完毕后,spring以WebApplicationContext.ROOT WEB APPLICATION CONTEXT ATTRIBUTE为属性Key,将其存储到ServletContext中,便于获取; 再次,contextLoaderListener监听器初始化完毕后,开始初始化web

spring 启动过程

别等时光非礼了梦想. 提交于 2020-02-29 03:09:34
首先,对于一个web应用,其部署在web容器中,web容器提供其一个全局的上下文环境,这个上下文就是ServletContext,其为后面的spring IoC容器提供宿主环境; 其次,在web.xml中会提供有contextLoaderListener。在web容器启动时,会触发容器初始化事件,此时contextLoaderListener会监听到这个事件,其contextInitialized方法会被调用,在这个方法中,spring会初始化一个启动上下文,这个上下文被称为根上下文,即WebApplicationContext,这是一个接口类,确切的说,其实际的实现类是XmlWebApplicationContext。这个就是spring的IoC容器,其对应的Bean定义的配置由web.xml中的context-param标签指定。在这个IoC容器初始化完毕后,spring以WebApplicationContext.ROOT WEB APPLICATION CONTEXT ATTRIBUTE为属性Key,将其存储到ServletContext中,便于获取; 再次,contextLoaderListener监听器初始化完毕后,开始初始化web.xml中配置的Servlet,这个servlet可以配置多个,以最常见的DispatcherServlet为例

【Spring】AOP注解方式实现机制

坚强是说给别人听的谎言 提交于 2020-02-29 01:15:00
一、概述 二、@EnableAspectJAutoProxy 注解分析 三、分析AnnotationAwareAspectJAutoProxyCreator 四、执行流程 1. registerBeanPostProcessors() 2. finishBeanFactoryInitialization() 3. InstantiationAwareBeanPostProcessor后置处理器的执行逻辑 4. 目标方法执行 第一部分,得到拦截器链 第二部分,拦截器链的触发过程 总结 一、概述 在Spring AOP 中: AnnotationAwareAspectJAutoProxyCreator 是基于Bean中的 AspectJ 注解来实现自动代理,在Bean创建的过程中完成对切入点的增强。 Spring AOP 的其他实现方式可以查看 【Spring】 AOP Base 对于 Spring AOP 使用注解的方式中,我们配置开启AOP注解 可以用XML的方式: <!-- 自动生成代理 底层就是AnnotationAwareAspectJAutoProxyCreator --> <aop:aspectj-autoproxy /> 或者用注解的方式 在配置类上标注 @EnableAspectJAutoProxy 注解 import org.springframework

Java笔记---枚举类和注解

匆匆过客 提交于 2020-02-28 14:20:17
Java笔记---枚举类和注解 一、枚举类 自定义枚举类 方式一:JDK5.0之前自定义枚举类 class Seasons { //1. 声明Seasons对象的属性 private final String SeasonName; private final String SeasonDescrp; //2. 私有化类的构造器, 并给对象赋值初始化 private Seasons(String SeasonName, String SeasonDescrp) { this.SeasonDescrp = SeasonDescrp; this.SeasonName = SeasonName; } //3. 提供当前枚举类的多个对象 public static final "枚举类的名字" public static final Seasons SPRING = new Seasons("SPRING", "春天"); public static final Seasons SUMMER = new Seasons("SUMMER", "夏天"); public static final Seasons AUTUMN = new Seasons("AUTUMN", "秋天"); public static final Seasons WINTER = new Seasons(

通过 ApplicationContext 发布 TestApplicationEvent 事件

杀马特。学长 韩版系。学妹 提交于 2020-02-28 14:07:41
Spring 提供了非常多的扩展接口,官方将这些接口称之为钩子,这些钩子会在特定的时间被回调,以此来增强 Spring 功能,众多优秀的框架也是通过扩展这些接口,来实现自身特定的功能,如 SpringBoot、mybatis 等。 1、Aware 系列接口 Aware 从字面意思理解就是“知道”、“感知”的意思,是用来获取 Spring 内部对象的接口。A ware 自身是一 个顶级接口,它有一系列子接口,在一个 Bean 中实现这些子接口并重写里面的 set 方法后,Spring 容器启动时,就会回调该 set 方法,而相应的对象会通过方法参数传递进去。我们以其中的 ApplicationContextAware 接口为例。 ApplicationContextAware 大部分 Aware 系列接口都有一个规律,它们以对象名称为前缀,获取的就是该对象,所以 ApplicationContextAware 获取的对象是 ApplicationContext 。 public interface ApplicationContextAware extends Aware { void setApplicationContext(ApplicationContext applicationContext) throws BeansException; }

Spring(七)核心容器 - 钩子接口

天涯浪子 提交于 2020-02-28 09:59:23
目录 前言 1、Aware 系列接口 2、InitializingBean 3、BeanPostProcessor 4、BeanFactoryPostProcessor 5、ImportSelector 6、ImportBeanDefinitionRegistrar 7、FactoryBean 8、ApplicationListener 最后 前言 Spring 提供了非常多的扩展接口,官方将这些接口称之为钩子,这些钩子会在特定的时间被回调,以此来增强 Spring 功能,众多优秀的框架也是通过扩展这些接口,来实现自身特定的功能,如 SpringBoot、mybatis 等。 1、Aware 系列接口 Aware 从字面意思理解就是“知道”、“感知”的意思,是用来获取 Spring 内部对象的接口。Aware 自身是一个顶级接口,它有一系列子接口,在一个 Bean 中实现这些子接口并重写里面的 set 方法后,Spring 容器启动时,就会回调该 set 方法,而相应的对象会通过方法参数传递进去。我们以其中的 ApplicationContextAware 接口为例。 ApplicationContextAware 大部分 Aware 系列接口都有一个规律,它们以对象名称为前缀,获取的就是该对象,所以 ApplicationContextAware 获取的对象是

SpringBoot 之基础学习篇.

China☆狼群 提交于 2020-02-28 08:14:28
一、概念简介 SpringBoot 的关键词是“约定俗成”,它根据长久以来的 Spring 开发配置经验,整理出一套适用、普遍、大家都认可的配置方案。所以 SpringBoot 的学习过程中心态一定要放宽,没必要太去钻牛角尖,重点是配置和自定义... Spring Boot 简化了基于Spring的应用开发,为Spring平台及第三方库提供了开箱即用的设置,你只需要“run”就能创建一个独立的,产品级的 Spring 应用。 SpringBoot 的 Startsers 是以一个依赖描述符的集合,包含了很多搭建,快速运行项目所需要的依赖,并提供一致的,可管理传递性的依赖集。你可以获取所有 Spring 及相关技术的一站式服务,而不需要翻阅示例代码,拷贝粘贴大量的依赖描述符。所有官方的 starters 遵循相似的命名模式:spring-boot-starter-* 。 SpringBoot 的 Auto-configuration 设计成可以跟 Starters 一起很好的使用,AutoConfiguration 会根据你所依赖的 jar 包,会尽最大努力去自动配置你的应用。 Spring Boot 每次发布都关联一个 Spring 框架的基础版本,所以强烈建议你不要自己指定Spring版本。 二、spring-boot-devtools 开发者工具 spring-boot

Spring缓存注解@Cacheable、@CacheEvict、@CachePut使用

北城以北 提交于 2020-02-28 04:54:36
扩展阅读: 注释驱动的 Spring cache 缓存介绍 spring boot + spring cache 实现两级缓存(redis + caffeine) 从3.1开始,Spring引入了对Cache的支持。其使用方法和原理都类似于Spring对事务管理的支持。Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对存放在缓存中,等到下次利用同样的参数来调用该方法时将不再执行该方法,而是直接从缓存中获取结果进行返回。所以在使用Spring Cache的时候我们要保证我们缓存的方法对于相同的方法参数要有相同的返回结果。 使用Spring Cache需要我们做两方面的事: n 声明某些方法使用缓存 n 配置Spring对Cache的支持 和Spring对事务管理的支持一样,Spring对Cache的支持也有基于注解和基于XML配置两种方式。下面我们先来看看基于注解的方式。 1 基于注解的支持 Spring为我们提供了几个注解来支持Spring Cache。其核心主要是@Cacheable和@CacheEvict。使用@Cacheable标记的方法在执行后Spring Cache将缓存其返回结果,而使用@CacheEvict标记的方法会在方法执行前或者执行后移除Spring Cache中的某些元素