本节主要是理论型: 关键看下节实操. 这个其实只要理解一点:使用AspectJ进行Spring AOP 编程,其实就是使用了JAVA注解的风格进行配置和使用. 不像之前讲的那样在配置文件中配置使用.…
Spring Boot -01- 快速入门篇(图文教程) 今天开始不断整理 Spring Boot 2.0 版本学习笔记,大家可以在博客看到我的笔记,然后大家想看视频课程也可以到[慕课网]手机 app,去找[Spring Boot 2.0 深度实践]的课程,令人开心的是,课程完全免费! 什么是 Spring Boot? Spring Boot 是由 Pivotal 团队提供的全新框架.Spring Boot 是所有基于 Spring Framework 5.0 开发的项目的起点.Spring B…
本文主要介绍了在本地搭建并运行一个Spring应用,演示了Spring依赖注入的特性 1 环境搭建 1.1 Maven依赖 目前只用到依赖注入的功能,故以下三个包已满足使用. <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <ma…
本节主要讲了在xml中配置切面的demo 1 解析 1.1 配置切面xml 1.2 配置切面xml 1.3 问:什么是动态代理? 2 代码演练 2.1 配置切面xml 1 解析 1.1 配置切面xml spring的所有切面和通知器必须放在一个<aop:config>内(可以配置多个<aop:config>元素),每一个<aop:config>可以包含point.advisor和aspect元素(必须按照顺序声明) 1.2 运用什么原理? <aop:config&…
1 解析 1.1 通知:after和afterreturning的区别 1.2 @RunWith 是什么? 2 代码演练 2.1 注解方式配置通知的两种方式 2.2 异常通知 2.3 非异常通知 1 解析 1.1 通知:after和afterreturning的区别 a after 后置通知相当于finally的功能,无论是否发生异常,都会执行,而返回后通知afterReturning 则在发生异常后,不再执行. b afterReturning返回后通知,一般有返回值,而后置通知after 不…
1 解析 1.1 类的方式实现各种通知需要实现的接口 1.2 创建Spring aop代理的优点及方法 1.3 代理控制切入点和通知的顺序的代码实现(具体完全实现,见代码2.1) 1.4 代理方式选择 2 代码演练 2.1 类的方式实现各种通知 2.2 类的方式实现各种通知(和2.1对比) 1 解析 1.1 类的方式实现各种通知需要实现的接口 前置通知:MethodBeforeAdvice 后置通知:AfterReturningAdvice 异常通知:ThrowsAdvice 环绕通知:Meth…
课程链接: 1 解析 1.1 advice中aspect 切面传参 1.2 通知参数名称——argNames属性, 参数为 JoinPoint.ProceedingJoinPoint.JoinPointStaticPart时,可以忽略argNames属性 1.3 其余不重要的部分 2 代码演练 2.1 前置通知@before给advice传递参数 2.1 前置通知@before传递类参数 1 解析 1.1 advice中aspect 切面传参 String传参和类传参参照2.1和2.2 泛型传参…
1 解析 1.1 使用global advisors demo 1.2 jdk代理和cglib代理的选择 1.3 如何强制使用CGLIB实现AOP? 1.4 JDK动态代理和CGLIB字节码生成的区别? 1.5 cglib的maven依赖 1.6  CGLIB代理的工作原理 1.7     简化的proxy定义 1.8 父子bean demo   2 代码演练 2.1 通配符使用 和 ProxyFactoryBean 连接点的选择 2.2 使用父子bean(parent标签使用) 1 解析 1.…
概念: 1 什么是aop及实现方式 2 aop的基本概念 3 spring中的aop 1 什么是aop及实现方式 1.1 aop,面向切面编程,比如:唐僧取经需要经过81难,多一难少一难都不行.孙悟空要经过27难,唐僧27难,猪八戒9难,沙僧18难.每个人统计自己的难数.这样造成业务冗杂,现在把统计经过的劫难数交给观音,唐僧只用骑马,悟空只用降妖除魔,八戒只用吃,沙僧只用担行李就行了. 实际应用中只是把统计劫难数换成了事务服务,日志管理,安全验证等. 1.2 实现方式有预编译或者运行期动态代理…
1 解析 1.1 疑问:2.2去掉@resource注解,为什么不能赋值?不是有set方法了吗? 1.2 @resource注解版本支持 1.3 没有显式指定@resource的那么,默认名称从何获得? 1.4 @postConstruct 和@predestroy注解版本 支持 1.5 @named 和 @inject 依赖注入注解的 版本支持 2 代码演练 2.1 给变量赋值(方法一) 2.2 给变量赋值(方法二) 2.3 注解PostConstruct 和注解 PreDestroy(前置注…
1 解析 1.1 什么是泛型? 1.2 泛型有什么作用? 1.3 泛型装配样式? 2 代码演练 2.1 泛型应用 1 解析 1.1 什么是泛型? Java泛型设计原则:只要在编译时期没有出现警告,那么运行时期就不会出现ClassCastException异常. 泛型:把类型明确的工作推迟到创建对象或调用方法的时候才去明确的特殊的类型 1.2 泛型有什么作用? 早期Java是使用Object来代表任意类型的,但是向下转型有强转的问题,这样程序就不太安全 首先,我们来试想一下:没有泛型,集合会怎么样…
1 解析 1.1 bean的单例和多例的应用场景 1.2 单例多例的验证方式 1.3 @Scope注解单例多例应用 2 代码演练 2.1 @Scope代码应用 1 解析 1.1 bean的单例和多例的应用场景 1.1.1  什么是单例多例: 所谓单例就是所有的请求都用一个对象来处理,比如我们常用的service和dao层的对象通常都是单例的,而多例则指每个请求用一个新的对象来处理,比如action;  1.1.2. 如何产生单例多例:    在通用的SSH中,单例在spring中是默认的,如果要…
1 解析 1.1 这两个注解应用在什么地方 1.2 应用方式 1.3 xml方式实现取值 2 代码演练 2.1 @ImportResource和@Value代码演练 1 解析 1.1 这两个注解应用在什么地方 接口调用,java与properties文件交互获取url和用户名密码等配置信息 1.2 应用方式 java类通过调用@Importresource找到xml,通过xml配置properties 示例: @Configuration @ImportResource("classpath:c…
1 解析 2.1 @bean注解定义 2.2 @bean注解的使用 2 代码演练 2.1 @bean的应用不带name 2.2 @bean的应用带name   2.3 @bean注解调用initMethod和destroyMethod 1 解析 2.1 @bean注解定义 @bean标识一个用于配置和初始化一个由springIOC容器管理的新对象的方法(生成ioc容器的bean实例),类似于xml配置的</bean> 2.2 @bean注解的使用 a 通常注解@bean和@Configurat…
本节主要讲述以下内容: 1 简述 2 代码演练 2.1 注解qualifier运用 1 简述 1.1 何种情况使用qualifier注解? a 按类型自动装配多个bean实例,可以用@qualifier指定唯一 b 目标是构造器或一个多参方法时,最好使用qualifiers,否则用resource(只有一个参数的setter方法) 1.2 xml方式如何运用qualifier <bean class="com.ddwei.bean"> <qualifier value…
课程链接: 本节主要讲了以下几块内容 1 注解相关解析 2 代码演练 集合for循环的使用 2.1 list集合应用 2.2 map集合应用 2.3 集合排序(只对list有效,对map无效(list有序,map无序)) 1 注解相关解析 1.1 autowired注解应用到集合属性可以提供所有特定类型的bean 1.2 autowired可以提供集合中实体类的bean和子类的bean(继承,详情见下方代码) autowired注解不能应用在Spring BeanPostProcessor或者B…
课程链接: 1 解析 2 代码演练 1 解析 1.1 @Required注解 该注解适用于bean属性的set方法 1.2 @Autowired 作用: 是为了把依赖的对象,自动的注入到bean里 使用方式: 1 @autowired required的默认值为false 2 每个类中只有一个构造器被标记为required=true 3 @autowired(required=false):如果找不到实体类,不报错. 4 可以添加到成员变量或者方法上边 2 代码演练 2.1 autowired作…
课程链接: 1 概述 2 代码演练 3 代码解析 1 概述 1.1 bean注解相关 a context:component-scan标签使用 问:该标签的作用是什么? 答:该标签作用是支持注解,在xml配置文件中不用配置bean了 问:该标签的使用条件是什么? 答:spring3.0之后才支持该标签的使用 b 类注解相关 @Component 通用类注解(所有实体类都可以用该注解) @Repository    注解dao类(持久层) @Service 注解Service类(服务层) @Con…
课程链接: 1 resource简析 2 resource代码演练 1 resource简析 urlsource:url对应的资源 classpath:获取类路径下的资源文件 filesystemresource:获取文件系统里面的资源 servletContextResource:servlet封装的资源 inputStreamResource:输入流封装的资源 ByteArrayResource:字节数组封装的资源 2 resource代码演练(可以配置在右键项目==>build path=…
课程链接: 本节主要讲了三大块内容 1 bean的生命周期概念 2 bean的初始化和销毁的三种方式对比(代码演练) 3 总结 1 bean的生命周期概念 1.1 bean的定义:xml中关于bean的配置,bean的id和bean的class等. 1.2 bean的初始化:ioc容器启动的时候加载xml文件中的bean生成实例. 1.3 bean的使用:bean容器中取出bean的实例并使用 1.4 bean销毁:指的是bean销毁时回收由这个bean创建的所有bean实例. 2 bean的初…
课程链接: 本节讲了5部分内容,6为项目demo: 1 接口及面向接口编程 2 什么是IOC 3 Spring的bean配置 4 Bean的初始化 5 Demo 自己理解: 1 高层模块和底层模块都依赖于他们共同的接口,而不是高层模块依赖于底层模块进行开发 2 IOC 控制反转,控制权的转移,将产生对象的过程反转了过来.本来由高层模块new对象,现在将创建对象的任务交给了外部容器.实现方式是依赖注入DI 3 参见demo2,spring-ioc.xml中bean的配置 对spring bean的…
课程链接: 1 Spring是什么? 2 为什么是Spring 3 Spring的作用: 4 适用范围 1 Spring是什么? a 开源框架 b 轻量级的控制反转(Ioc)和面向切面编程(AOP)的容器框架(本身容量和运行该容器的开销都很小,通过控制反转实现轻耦合的作用) 2 为什么是Spring a 在Spring上开发应用简单方便快捷 3 Spring的作用: a 容器 b 提供了对多种技术的支持(jms支持 ,mq支持 ,UnitTest支持) c aop(事务管理,日志等) d 提供了…
课程链接: 课程简介: 1 什么是框架 2 Spring简介 3 IOC(配置,注解) 4 Bean(配置,注解) 5 AOP(配置,注解,AspectJ.API) SpringFrameWork 常用网站: http://spring.io/ http://spring.io/projects/spring-framework/ Spring文档…
本节主要是模拟spring aop 的过程. 实现spring aop的过程 这一节老师虽然说是以后在工作中不常用这些api,实际上了解还是有好处的, 我们可以从中模拟一下spring aop的过程.所以,这节课是有必要的,如果没有的话,那才是失职. 将前一章中的xml配置方式改为了实现接口的实现方式 具体细节和使用参考开发文档(具体使用场景参考下一章)…
1 简析 1.1 advisor简析(这个不太明白,后续再看吧) 2 代码演练 2.1 环绕通知的综合应用(代码和视频对不上,慕课网讲的本身有问题)       1 简析 1.1 advisor简析(这个不太明白,后续再看吧) Advisor是Pointcut和Advice的配置器,它包括Pointcut和Advice,是将Advice注入程序中Pointcut位置的代码 <aop:aspectj-autoproxy/> <aop:config proxy-target-class=&q…
1 解析 1.1 aop:declare-parents 标签简介 1.2 标签使用样式 2 代码演练 2.1 introductions标签应用 1 解析 1.1 aop:declare-parents 标签简介 允许一个切面声明一个实现指定接口的通知对象,并且提供了一个接口实现类来代表这些对象 不同于aop:before等其他标签,元素声明该元素用于声明所匹配的类型拥有一个新的parent(父类).所以测试类getBean后可以强转 1.2 标签使用样式 <aop:declare-paren…
1 解析 1.1 通知执行顺序 2 代码演练 1 解析 1.1 通知执行顺序 aop执行方式为:前置通知==>所要增强的方法==>后置通知==>最终通知 在出现异常时会进行:前置通知==>所要增强的方法==>异常通知==>最终通知 而用xml进行配置时,是按照我们写好的顺序进行动态组合完成,最终和后置通知是随着xml配置的前后顺序改变的,但是经过测试不会影响前置和所要增强的方法的顺序,但是会影响最终和后置通知的位置. 我认为利用环绕通知进行方法的增强(aop:aroun…
1 解析 1.1 xml常见的配置切入点写法 2 代码演练 2.1 xml配置切入点   1 解析 1.1 xml常见的配置切入点写法 2 代码演练 2.1 xml配置切入点 xml配置: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://…
2 代码演练 2.1 环绕通知(不带参数) 2.2 环绕通知(带参数) 2 代码演练 2.1 环绕通知(不带参数) 实体类: package com.imooc.aop.schema.advice.biz; public class AspectBiz { public void biz(){ System.out.println("MoocAspect biz"); // throw new RuntimeException(); } } 配置文件: <?xml version…
课程链接: 1 自动装配的方式 2 自动装配实现 1 自动装配的方式 根据反射的机制 1.1 byName根据属性名自动装配,类似于依赖注入的set注入.(如果找不到set属性中的bean,如果test中用try方法的话,报空指针异常) 1.2 byType根据类名进行注入,xml配置文件beanId可以不用写 1.3 constructor应用于构造器参数.(找不到构造器参数一致的bean,抛异常) 2 自动装配实现 2.1 自动装配byName: 该方式实现方式与set注入类似,唯一不同之处…