Spring5
文章
00 概述
后续需要整理一下每一部分涉及到的注解。 1 概述 参考教程尚硅谷Spring5课程 主要内容架构 基本概念 IOC容器 AOP Jdbc 事务 Spring5-webflux 概念 开放源代码的JavaEE应用程序框架 针对bean的生命周期进行管理的轻量级容器 特点 解决应用开发的复杂性。降低JavaApi的使用 方便解耦,简化开发。 AOP变成支持 Test方便测试 integeration方便整合集成 方便进行事务操作 核心 IOC:控制反转,把创建对象的过程交给Spring进行挂历。 Aop:面向切面,不修改源代码的情况下,进行功能的增强。 2 入门实例 创建普通java工程。 将jar包导入指定目录下,并添加idea以来路径。 使用bean标签完成spring配置 12345678<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans&quo...
01 1IOC容器原理
1 IOC容器原理IOC概念 控制反转。把对象创建和对象调用的过程,交给Spring进行管理。 使用IOC的目的:降低代码耦合度。 底层原理 xml解析 工厂模式 反射 java对象调用的过程 1234567891011class UserDao{ add(){ }}public class UserService{ public void execute(){ UserDao dao = new UserDao(); dao.add(); }} 使用工厂模式 1234567891011121314151617class UserDao{ add(){ }}class UserFactory{ public static UserDao getDao(){ return new UserDao(); }}class Us...
01 2IOC基于XML容器管理
IOCBean管理基于XML方式1 基于XMl方式创建对象1234<bean id="user" class="com.ykl.User"></bean>id:对象唯一标识class:创建对象的类全路径,包类路径name:对象名称标识 在Spring给你配置文件中,使用bean标签,标签里添加对应属性。实现对象的创建 bean中有很多属性 创建对象的时候,执行无参构造函数。 2 基于XML方式注入属性 DI依赖注入,就是注入属性。 原始的属性注入方法123456789101112131415161718192021222324252627282930313233343536/** * Alipay.com Inc. * Copyright (c) 2004-2022 All Rights Reserved. */package com.ykl;/** * @author yinkanglong * @version : Book, v 0.1 2022-10-08 14:32 yinkanglong Exp $...
01 3IOC基于注解容器管理
IOCBean管理基于注解方式基于注解方式IOCBean管理1 简介注解概念 注解是代码特殊标记,格式:@注解名称(属性名称=属性值,属性名称=属性值) 注解的位置:注解可以作用在类、属性、方法。 使用目的:简化XML配置 IOC的两个步骤 创建对象 注入属性 2 基于注解方式创建对象实现创建对象的注解四个注解功能是一样的,都可以用来创建bean实例。 @Component 组件层 @Service service层 @Controller web层 @Repository DO层 使用注解创建对象bean的步骤 引入依赖。spring-aop(该jar包实现了注解) 开启组件扫描(context命名空间,添加扫描) 检测到组件扫描,会扫描包下的所有类。 可以通过filters过滤 12345678910111213<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/...
02 AOP
1 AOP基本概念概念面向切面编程Aspect Oriented Programming 通过 预编译方式 和 运行期间动态代理 实现程序功能的统一维护的一种技术。 AOP是OOP(面相对象编程)的延续。是函数式编程的一种衍生泛型。 利用AOP可以对业务逻辑的各个部分进行隔离。降低耦合度、提高可用性、提高开发效率 主要功能将日志记录、性能统计、安全控制、事务处理、异常处理等代码从业务逻辑代码中划分出来。 通俗描述:不通过修改源代码的方法,在主干功能里添加新功能 2 AOP底层原理动态代理的原理AOP使用动态代理实现面向切面编程 有接口情况,使用JDK动态代理 设计模式:代理模式。创建接口实现类代理对象,增强类的方法。 没有接口情况,使用CGLIB实现动态代理 创建子类继承原来的类。 创建当前类子类的代理对象,增强类中的方法。 动态代理的实现 JDK 动态代理的实现。使用java.lang.reflect.Proxy,通过反射原理实现动态代理。 第一个参数:类加载器 第二个参数:被代理的接口 第三个参数:增强方法的逻辑,实现接口 12static O...
02 AOP详解
1 概述概念AOP(Aspect Oriented Programming)面向切面思想,是Spring的三大核心思想之一(AOP-面向切面、IOC-控制反转、DI-依赖注入)。 为什么AOP 有多少个业务操作,就要写多少重复的校验和日志记录代码,这显然是无法接受的。当然用面向对象的思想,可以把这些重复的代码抽离出来,写成公共方法,就是下面这样: 代码冗余和可维护性的问题得到了解决,但每个业务方法中依然要依次手动调用这些公共方法,也是略显繁琐。 有没有更好的方式呢?有的,那就是AOP,AOP将权限校验、日志记录等非业务代码完全提取出来,与业务代码分离,并寻找节点切入业务代码中 AOP体系结构AOP要做的三件事: 在哪里切入,也就是权限校验等非业务操作在哪些业务代码中执行;(切入点) 什么时候切入,是业务代码执行前还是执行后;(通知) 切入后做什么事,比如做权限校验、日志记录等。 Pointcut:切点,决定处理如权限校验、日志记录等在何处切入业务代码中(即织入切面)。切点分为execution方式和annotation方式。前者可以用路径表达式指定哪些类织入切面,后者可...
03 JDBCTemplate
Data Access简介概述DataAccess模块主要包括 JDBC ORM OXM JDBCTemplate对JDBC进行封装,很方便的实现对数据库进行操作。 自己开发项目也应该这样做。首先进行设计,把接口、实现、属性、方法定义好。遵循从上到下的设计。然后进行开发,根据具体的业务逻辑实现方法的内容。遵循从下到上的开发。 准备工作 引入相关的jar包 数据库连接池 1234567<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3310/user">...
04 事务
事务1 简介事务概念事务是数据库操作最近本的单元,逻辑上一组操作,要么都成功,如果有一个失败,所有的都失败。 事务有四大特性ACID 原子性,不可分割 一致性,多个事务看到的数据是一致的 隔离性,多个事务不会产生影响 持久性,可以持久化 准备环境 创建service和dao层的bean(设计代码架构) 实现转账的业务逻辑(开发业务逻辑) 撰写测试用例进行测试(测试代码) 2 事务步骤操作步骤 开启事务操作 进行业务操作,并添加异常处理 没有发生异常,提交事务。 第四部 出现异常事务回滚 Spring事务管理介绍 事务添加到三层结构的service层 在spring进行事务管理操作 声明式事务管理。通过配置实现。 编程式事务管理。需要写代码 生命式事务管理 注解方式 xml配置文件方式 在Spring进行声明式事务管理,底层使用AOP 提供一个接口,代表事务管理。针对不同的框架提供了不同的实现类。 事务管理器 3 基于注解的声明式事务管理步骤 配置事务管理器 12345678910111213141516```2. 在Spring配置文件中开启事...
05 Spring5日志&测试
框架新功能 基于java8,兼容jdk9 本质上,Spring容器的管理有三种主要的方式 xml配置方式,能够通过xml声明bean,并且注入bean的属性 注解方式,通过@Bean@Component创建bean,通过@Autowire注入bean 函数方式,同构register函数讲普通的java对象注册为bean,通过context.getBean获取 日志功能自带了通用的日志封装。可以整合第三方日志工具log4j&slf4j slf4j是中间层 log4j是日志引擎,实现了slf4j提供的接口。可以配合使用 12345678910111213141516<?xml version="1.0" encoding="UTF-8"?><configuration> <appenders> <console name="Console" target="SYSTEM_OUT"> <Pa...
06 WebFlux01Flux&Mono
WebFlux https://blog.csdn.net/crazymakercircle/article/details/124120506https://zhuanlan.zhihu.com/p/378136040 1 WebFlux简介 第一轮:就是看视频教程学会所有技术的原理和基本使用方法第二轮:阅读官方的文档,尤其是Spring、Java、Maven等,掌握编程的细节。 简介Spring5添加的新模块。用于web开发的,功能与SpringMVC类似。Webflux使用与当前比较流行的响应式编程出现的框架。 传统的Web框架,比如SpringMVC,基于Servlet容器,Webflux是一种异步非阻塞的框架。(异步非阻塞的框架在Servlet3.1后才支持) 其和虚拟式基于Reactor的相关API实现的。 异步非阻塞我更喜欢反过来理解这里。同步异步是针对被调用者的,阻塞和非阻塞是针对调用者的。 阻塞和非阻塞针对调用者。阻塞和非阻塞指的是调用者(程序)在等待返回结果(或输入)时的状态。阻塞时,在调用结果返回前,当前线程会被挂起,并在得到结果之后返回。非阻塞时,如...














