spring自定义注解

69道必考spring面试题

旧时模样 提交于 2020-03-24 18:49:40
目录 Spring 概述 依赖注入 Spring beans Spring注解 Spring数据访问 Spring面向切面编程(AOP) Spring MVC Spring 概述 1. 什么是spring? Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。 2. 使用Spring框架的好处是什么? 轻量:Spring 是轻量的,基本的版本大约2MB。 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。 面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。 容器:Spring 包含并管理应用中对象的生命周期和配置。 MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。 事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。 异常处理:Spring 提供方便的API把具体技术相关的异常(比如由JDBC,Hibernate or JDO抛出的)转化为一致的unchecked 异常。 3.

Spring事件发布

ぐ巨炮叔叔 提交于 2020-03-24 07:47:34
Spring 事件发布 Author: xiaolu 概要: Spring 的 ApplicationContext 在 BeanFactory 的基础上,支持事件的发布(包括同步 - 默认,和异步事件)。 事件发布和事件监听处理本质上是观察者模式的一种使用方式。对于 Spring 事件的发布,包含三个部分: 事件实体、事件监听器、事件发布者。 事件实体: 事件实体定义了什么事件,同时包含了要传递的参数信息。 Spring 的事件发布中,自定义事件实体需要继承 ApplicationEvent 类。即所有的事件都是 ApplicationEvent 类的子类。 事件监听者: 事件监听者,即对某个事件感兴趣的部分,在特定事件发生后,需要去进行某种逻辑的处理。 Spring 中事件监听者需要实现 ApplicationListener 接口。在其 onApplicationEvent 函数中进行事件的处理。 事件发布者: 事件发布者即发布事件的部分,它推动了事件流程的开始。 Spring 中,事件的发布可以使用 ApplicationContext 类的 publishEvent 方法来进行发布。 代码示例: 1) Java 配置部分(替代 xml 文件配置方式) 2) 事件定义 此处定义一个 StartEvent 事件,继承于 ApplicationEvent 3) 事件监听者

Spring ApplicationListener 理解

99封情书 提交于 2020-03-24 07:44:16
在开发时有时候需要在整个应用开始运行时执行一些特定代码,比如初始化环境,准备测试数据、加载一些数据到内存等等。 在 spring 中可以通过ApplicationListener来实现相关的功能,加载完成后触发contextrefreshedevent事件(上下文件刷新事件)。 ApplicationContext事件机制是观察者设计模式的实现,通过ApplicationEvent类和ApplicationListener接口,可以实现ApplicationContext事件处理。 如果容器中有一个ApplicationListener Bean,每当ApplicationContext发布ApplicationEvent时,ApplicationListener Bean将自动被触发 。这种事件机制都必须需要程序显示的触发。 其中spring有一些内置的事件,当完成某种操作时会发出某些事件动作。比如监听ContextRefreshedEvent事件,当所有的bean都初始化完成并被成功装载后会触发该事件,实现ApplicationListener<ContextRefreshedEvent>接口可以收到监听动作,然后可以写自己的逻辑。 同样事件可以自定义、监听也可以自定义,完全根据自己的业务逻辑来处理。 内置事件 序号         Spring 内置事件 & 描述 1    

Spring 事件(2)- 自定义事件

南笙酒味 提交于 2020-03-24 07:34:50
Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of Control – IOC) 理解依赖注入(DI – Dependency Injection) Bean XML 配置(1)- 通过XML配置加载Bean Bean XML 配置(2)- Bean作用域与生命周期回调方法配置 Bean XML 配置(3)- 依赖注入配置 Bean XML 配置(4)- 自动装配 Bean 注解(Annotation)配置(1)- 通过注解加载Bean Bean 注解(Annotation)配置(2)- Bean作用域与生命周期回调方法配置 Bean 注解(Annotation)配置(3)- 依赖注入配置 Bean Java配置 Spring 面向切面编程(AOP) Spring 事件(1)- 内置事件 Spring 事件(2)- 自定义事件 除了内置事件,Spring中也可以使用自定义事件。 怎样使用自定义事件: 创建事件类 - 扩展 ApplicationEvent 类,创建事件类。 创建发送类 - 发送类获取 ApplicationEventPublisher 实例发送事件。 创建监听类 - 实现 ApplicationListener 接口

spring属性赋值和自动装配

孤者浪人 提交于 2020-03-23 08:57:42
一 @Value赋值和@propertySource加载外部配置文件 1、@Value 一般用在属性和setter方法上,当该类注册成bean时,会自动为其属性或方法的参数赋值。 注意:一定不能用在静态方法上,否则会失效 2、用法:   @Value("placeholder") //赋予指定值   @Value("${placeholder}") //赋予配置文件中指定key为placeholder的值 3、@PropertySource("classpath:application.properties")  //导入指定的配置文件, 一般写在主配置类上 4、示例: public class Desk{ private String name; @Value("1") private int hight; private String owner; public Desk() { } public Desk(String name) { this.name = name; } public String getName() { return name; } @Value("${name}") public void setName(String name) {this.name = name; } public int getHight() { return hight; }

死磕 java线程系列之终篇

假装没事ソ 提交于 2020-03-21 09:06:17
(手机横屏看源码更方便) 简介 线程系列我们基本就学完了,这一个系列我们基本都是围绕着线程池在讲,其实关于线程还有很多东西可以讲,后面有机会我们再补充进来。当然,如果你有什么好的想法,也可以公从号右下角联系我。 重要知识点 直接上图,看着这张图我相信你能够回忆起很多东西,也可以看着这张图来自己提问自己回答,当然,也可以把这张图作为面试复习的参考。 其中,ThreadLocal是我们没有分析的类,放在netty系列来学习,敬请期待^^ 彩蛋 下一个系列我们将学习netty相关的知识,当然跑不掉的还有nio。 我为什么直接讲netty了呢? 因为netty很重要,很多框架的底层都是用netty实现的,比如dubbo、spark、hadoop、storm、zookeeper、grpc、flink、thrift、elasticsearch、spring cloud gateway。 只要牵涉到网络通信的框架,基本上都会使用netty作为底层通信,所以,你说netty重不重要,那是相当的重要,so,我们先讲netty。 我为什么不讲spring系列呢? spring系列主要分为三大部分:spring core、spring boot、spring cloud。 spring core主要包含两大功能:spring IoC和spring mvc,这两个功能其实都是比较简单的东西

注解实现Bean依赖注入

▼魔方 西西 提交于 2020-03-21 05:29:29
12.2.1 概述 注解实现Bean配置主要用来进行如依赖注入、生命周期回调方法定义等,不能消除XML文件中的Bean元数据定义, 且基于 XML 配置中的依赖注入的数据将覆盖基于注解配置中的依赖注入的数据 。 Spring3的基于注解实现Bean依赖注入支持如下三种注解: Spring 自带依赖注入注解: Spring自带的一套依赖注入注解; JSR-250 注解: Java平台的公共注解,是Java EE 5规范之一,在JDK6中默认包含这些注解,从Spring2.5开始支持。 JSR-330 注解 :Java 依赖注入标准,Java EE 6规范之一,可能在加入到未来JDK版本,从Spring3开始支持; JPA 注解: 用于注入持久化上下文和尸体管理器。 这三种类型的注解在Spring3中都支持,类似于注解事务支持,想要使用这些注解需要在Spring容器中开启注解驱动支持,即使用如下配置方式开启: java代码: Java代码 <beans xmlns= "http://www.springframework.org/schema/beans" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xmlns:context= "http://www.springframework.org/schema/context

Spring + Spring MVC + MyBatis 整合

生来就可爱ヽ(ⅴ<●) 提交于 2020-03-20 15:16:14
1.所需要 Jar包 ? <!-- Spring3. 0.1 包 --> org.springframework.web- 3.0 . 1 系列 <!-- 公共包 --> slf4j-api- 1.5 . 6 .jar slf4j-log4j12- 1.5 . 6 .jar log4j- 1.2 . 13 .jar commons-logging- 1.1 . 1 .jar asm- 3.1 .jar cglib- 2.2 .jar <!-- mybatis与Spring的整合所需的包 --> mybatis- 3.0 . 5 .jar aopalliance- 1.0 .jar mybatis-spring- 1.0 . 1 .jar mybatis-generator-core- 1.3 . 1 .jar(mybatis代码生成器包) <!-- jdbc driven --> mysql-connector-java- 3.1 . 6 -bin.jar <!-- JSR验证-Hibernate validate 4.1 --> hibernate-validator- 4.1 . 0 .Final.jar validation-api- 1.0 . 0 .GA.jar <!-- Spring Json 支持包 --> jackson-all- 1.8 . 1 .jar 2.

spring扩展点之一:BeanFactoryPostProcessor和BeanPostProcessor

痞子三分冷 提交于 2020-03-18 05:25:08
一、BeanFactoryPostProcessor和BeanPostProcessor的区别 BeanFactoryPostProcessor和BeanPostProcessor都是 spring初始化bean的扩展点 。两个接口非常相似。 BeanFactoryPostProcessor可以对bean的定义(配置元数据)进行处理。也就是说,Spring IoC容器允许BeanFactoryPostProcessor在容器实际实例化任何其它的bean之前读取配置元数据,并有可能修改它。如果你愿意,你可以配置多个BeanFactoryPostProcessor。你还能通过设置'order'属性来控制BeanFactoryPostProcessor的执行次序。 注册BeanFactoryPostProcessor的实例,需要重载void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException; 通过beanFactory可以获取bean的示例或定义等。同时可以修改bean的属性,这是和BeanPostProcessor最大的区别。 例如: BeanDefinition bd = beanFactory.getBeanDefinition("xxBean");

使用Spring进行面向切面编程(AOP)

女生的网名这么多〃 提交于 2020-03-17 08:36:43
本文转载自: 使用Spring进行面向切面编程(AOP) 前言 面向切面编程(AOP)提供另外一种角度来思考程序结构,通过这种方式弥补了面向对象编程(OOP)的不足。 除了类(classes)以外,AOP提供了 切面。切面对关注点进行模块化,例如横切多个类型和对象的事务管理。 (这些关注点术语通常称作 横切(crosscutting) 关注点。) Spring的一个关键的组件就是 AOP框架。 尽管如此,Spring IoC容器并不依赖于AOP,这意味着你可以自由选择是否使用AOP,AOP提供强大的中间件解决方案,这使得Spring IoC容器更加完善。 Spring 2.0 AOP Spring 2.0 引入了一种更加简单并且更强大的方式来自定义切面,用户可以选择使用基于模式(schema-based)的方式或者使用@AspectJ注解。 这两种风格都完全支持通知(Advice)类型和AspectJ的切入点语言,虽然实际上仍然使用Spring AOP进行织入(Weaving)。 本章主要讨论Spring 2.0对基于模式和基于@AspectJ的AOP支持。请查阅"AOP声明风格的选择"一节获取 为你的应用选择适当的声明风格的建议。Spring 2.0完全保留了对Spring 1.2的向下兼容性,下一章 将讨论 Spring 1.2 API所提供的底层的AOP支持。