spring自定义注解

SpringBoot之SpringApplication Explain

混江龙づ霸主 提交于 2020-02-11 07:14:36
SpringApplication Explain The SpringApplication class provides a convenient way to bootstrap a Spring application that is started from a main() method. In many situations, you can delegate to the static SpringApplication.run method, as shown in the following example. (SpringApplication类提供了一种便利的方式以便引导Spring应用从 #main 启动,大多数情况下,可以通过静态方法 SpringApplication#run 代理启动) How TO Use SpringApplication @EnableAutoConfiguration public class MyApplication { // ... Bean definitions public static void main(String[] args) throws Exception { SpringApplication.run(MyApplication.class, args); } } Customize

Spring Event事件驱动

混江龙づ霸主 提交于 2020-02-10 19:32:18
Spring事件驱动模型,简单来说类似于Message-Queue消息队列中的Pub/Sub发布/订阅模式,也类似于Java设计模式中的观察者模式。 自定义事件 Spring的事件接口位于 org.springframework.context.ApplicationEvent ,源码如下: public abstract class ApplicationEvent extends EventObject { private static final long serialVersionUID = 7099057708183571937L; private final long timestamp; public ApplicationEvent(Object source) { super(source); this.timestamp = System.currentTimeMillis(); } public final long getTimestamp() { return this.timestamp; } } 继承了Java的事件对象 EventObject ,所以可以使用 getSource() 方法来获取到事件传播对象。 自定义Spring事件 public class CustomSpringEvent extends ApplicationEvent {

Spring使用自定义切面(aop)方法时不生效

十年热恋 提交于 2020-02-10 18:43:46
这里我以shiro+springboot的一个例子为例,理解为主即可 1.先了解怎么做到spring切面编程(aop) 1).制作切面类 2).在userServiceimpl加入切面注解 2.确定在那里使用到被切对象 1).shiro中使用到userService 2.)在 controller使用到 注意其中config(springboot的启动类)对象中加载shiro对象 执行: controller访问的时候发现无法触发切面方法 解决: 这是因为在spring加载shiro(UserRealm类)的时候使用此时切面类还没加载,但是在UserRealm类中又注入了UserServiceImpl类(注意:此时不是代理类,就是个普通类而已,且该类已经注入到spring容器中,不会再注入第二次了),因此在controller调用的userService方法的时候不是代理类,所以无法做到切面。 解决方法:在UserRealm对象中的UserService加上@Lazy注解,延迟注入到Spring容器,让切面类加载完后再注入 来源: CSDN 作者: 风吹底裤飘 链接: https://blog.csdn.net/qq_37431224/article/details/104252084

徒手撸一个 Spring Boot 中的 Starter ,解密自动化配置黑魔法!

蓝咒 提交于 2020-02-10 13:28:45
原文: https://mp.weixin.qq.com/s/tKr_shLQnvcQADr4mvcU3A 我们使用 Spring Boot,基本上都是沉醉在它 Stater 的方便之中。Starter 为我们带来了众多的自动化配置,有了这些自动化配置,我们可以不费吹灰之力就能搭建一个生产级开发环境,有的小伙伴会觉得这个 Starter 好神奇呀!其实 Starter 也都是 Spring + SpringMVC 中的基础知识点实现的,今天松哥就来带大家自己来撸一个 Starter ,慢慢揭开 Starter 的神秘面纱! 核心知识 其实 Starter 的核心就是条件注解 @Conditional ,当 classpath 下存在某一个 Class 时,某个配置才会生效,前面松哥已经带大家学习过不少 Spring Boot 中的知识点,有的也涉及到源码解读,大伙可能也发现了源码解读时总是会出现条件注解,其实这就是 Starter 配置的核心之一,大伙有兴趣可以翻翻历史记录,看看松哥之前写的关于 Spring Boot 的文章,这里我就不再重复介绍了。 定义自己的 Starter 定义 所谓的 Starter ,其实就是一个普通的 Maven 项目,因此我们自定义 Starter ,需要首先创建一个普通的 Maven 项目,创建完成后,添加 Starter 的自动化配置类即可,如下

2020-02-09

血红的双手。 提交于 2020-02-09 21:23:36
2020-02-09 描述 spring aop练习 今日之技术博客 Spring Spring是高度模块化的,可以单独使用Spring的某个库而不需要依赖Spring的其他库。比如,使用Spring Context库不需要依赖Spring Persistence或者Spring MVC库。 spring Maven依赖 依赖 介绍 依赖于 spring-core 这个jar文件包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工具类。 commons-collections.jar spring-beans 这个jar文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行Inversion of Control / Dependency Injection(IoC/DI)操作相关的所有类。如果应用只需基本的IoC/DI支持,引入spring-core.jar及spring- beans.jar文件就可以了。 spring-core.jar,cglib-nodep-2.1_3.jar spring-aop 这个jar文件包含在应用中使用Spring的 AOP特性时所需的类。使用基于AOP的Spring特性,如声明型事务管理(Declarative Transaction

spring Security项目快速搭建

巧了我就是萌 提交于 2020-02-08 18:11:40
spring Security的底层原理就是拦截器链。在上一篇文章使用注解方式搭建spring项目中, 可以自定义一套拦截器,拦截实现spring提供的HandlerInterceptr接口,然后实现三个拦截器方法, 在prexxx方法中定义验证逻辑。拦截器定义好后在servletContext容器的配置类中注入进来再进行注册。就可以使用。 这是基于session进行认证授权的方式。 spring Security为我们提供了认证授权的框架。下面大概上说明一下怎么快速搭建一个spring Security项目。 1 创建maven工程 2 pom依赖,加上spring Security的相关依赖     <dependency>       <groupId>org.springframework.security</groupId>       <artifactId>spring-security-web</artifactId>       <version>5.1.5.RELEASE</version>     </dependency>     <dependency>       <groupId>org.springframework.security</groupId>       <artifactId>spring-security-config<

【Spring源码】 后置处理器BeanPostProcessor底层原理分析

一笑奈何 提交于 2020-02-08 09:34:25
【Spring源码】 BeanPostProcessor底层原理分析 1.Spring中bean的生命周期 2.Spring注解开发指定初始化和销毁的方式 3.BeanPostProcessor底层原理分析 4.Spring中BeanPostProcessor的应用 注:其他一些spring源码解读,如果有需要,可以参考: 【spring源码】spring容器IOC底层源码分析 【spring源码】AOP底层源码分析 【spring源码】spring声明式事务底层源码分析 【spring源码】ApplicationListener事件监听底层原理 1.Spring中bean的生命周期 今天不聊那么复杂,其实bean的生命周期就这四步:实例化、初始化、使用、销毁 2.Spring注解开发指定初始化和销毁的方式 大概以下四种方式: 2.1 @Bean指定init-method和destroy-method 举例Demo: bean实体类 /** * bean的生命周期 * * @author wangjie * @version V1.0 * @date 2020/1/6 */ public class Food { public Food(){ System.out.println("food constructor"); } public void init(){ System

spring实战第二章小记-装配bean

£可爱£侵袭症+ 提交于 2020-02-07 13:11:22
时间:2020/02/06 一.思想 1.创建应用对象之间协作关系的行为通常称为装配,这也是依赖注入(DI)的本质。 对于上面这句话的个人理解:当我们在new一个对象时如果传入了别的对象作为参数(这个对象可能是引用数据类型也可能是基本数据类型),这时两个对象之间就形成了一种依赖关系,由于这种依赖关系的存在,两个对象之间就是一种强耦合的关系,而通过依赖注入可以降低两个对象之间的耦合度,注意,不是消除,如果两个对象之间没有耦合关系,那两个对象就是完全没有关系的。 2.spring框架提供了三种主要的装配机制: 在XML中进行显式配置 在Java中进行显示配置 隐式的bean发现机制和自动装配 3.关于上面三种方式的优先级(作者的意思,你可以根据自己的喜爱选择): 隐式的bean发现机制和自动装配>在Java中进行显示配置>在XML中进行显示装配 4.spring从两个角度来实现自动化装配: 组件扫描:spring会自动发现应用上下文中所创建的bean。 自动装配:spring自动满足bean之间的依赖。 5.自动装配:自动装配就是让spring自动满足bean依赖的一种方法,在满足依赖的过程中,会在spring应用上下文中寻找匹配某个bean需求的其他bean。 6.在进行显式配置时,JavaConfig是更好的方案,因为它更为强大、类型安全并且对重构友好。 7.默认情况下

SpringMVC总结

无人久伴 提交于 2020-02-07 11:22:57
SpringMVC也总结完成了,费尽心血啊。。接下来就会将Mybatis、Spring、SpringMVC整合起来,搭建一个SSM项目模型了,我会尽快完成。 希望大家多多支持,点赞关注哦~~ 文章目录 一、SpringMVC:回顾MVC 1、回顾MVC 1.1、什么是MVC 1.2、Model1时代 1.3、Model2时代 1.4、回顾练习Servlet 二、SpringMVC:什么是SpringMVC 2、SpringMVC 2.1、概述 2.2、中心控制器 2.3、SpringMVC执行原理 三、SpringMVC:Hello,SpringMVC 3、HelloSpringMVC 3.1、配置版实现 3.2、注解版实现 3.3、小结 四、SpringMVC:Controller 及 RestFul风格 4、Controller 4.1、控制器Controller 4.2、实现Controller接口 4.3、使用注解@Controller 4.4、RequestMapping 5、RestFul 风格 5.1、RestFul 风格 5.2、小黄鸭调试法 五、SpringMVC:结果跳转方式 6、结果跳转方式 6.1、ModelAndView方式 6.2、ServletAPI方式 6.3、SpringMVC方式 六、SpringMVC:数据处理 7、数据处理 7.1

Spring基础学习

99封情书 提交于 2020-02-07 03:37:01
文章目录 Spring简介 环境搭建 导入jar包 配置文件 使用Spring IOC Spring的IOC容器 Spring 创建对象的三种方式 1.通过构造方法创建 2.实例工厂创建对象 静态工厂实例化 Bean 的属性赋值(注入) 有参构造 属性setter注入 依赖注入(DI) Spring简介 Spring是分层的JavaSE/EE full-stack 轻量级开源框架,以IoC(Inverse of Control 控制反转)和AOP(Aspect Oriented Programming 面向切面编程)为内核,使用基本的JavaBean来实现程序功能。 在实际开发中,通常服务器端采用三层体系架构,分别为表示层(web)、业务逻辑层(service)、持久层(dao), Spring对每一层都提供了技术支持。 Spring具有简单、可测试和松耦合的特点,从这个角度出发,Spring不仅可以用于服务器端开发,也可以应用于任何Java应用的开发中。 Spring几大核心功能 1.IoC/DI 控制反转/依赖注入 2. AOP 面向切面编程 3 声明式事务 上图是spring框架的运行框架 一:Test Test:是Spring提供的测试功能 二:Core Container Core Container是核心容器,也是Spring提供的最基本的条件 包含: 1.Beans