悟纤
过着爱谁谁的生活,活出不设限的人生!
展开
-
Spring入门到精通:系列文章 - 导读
课程目标 本课程专门Sping的核心特性IOC、AOP以及JdbcTemplate、Spring事务管理展开详细的讲解。学习收获(1)深入了解Spring框架,揭秘Spring核心特性。(2)涵盖Spring核心知识点:IOC、AOP、Spring-Jdbc、Spring事务管理、SpringMVC等等。适合人群1.有Java基础视频学习如果觉得文字学习的无趣、学习不明白,那么可以选择视频学习:https://t.cn/A6bFcDh4...原创 2020-11-02 19:02:11 · 15569 阅读 · 0 评论 -
Spring入门到精通:第一章 基础入门:1.Spring框架概述
前言:为什么要学习Spring框架? 为什么要学习Spring框架呐?(1)使用广泛:现在很多的企业都有Spring的影子,不管是SSM、SSH,还是特别流行的Spring Boot都有它美丽的影子。(2)基于设施:Spring已经成为和Java核心库一样的基础设施,如果想成为一个合格的Java程序员,Spring肯定绕不开。(3)整合其它的框架:可以方便的整合其它的框架,比如:MyBatis、Hibernate。(4)学习Spring优雅的设计理念:对于java特性接口、抽...原创 2020-11-02 19:05:44 · 16304 阅读 · 0 评论 -
Spring入门到精通:第一章 基础入门:2.Spring之HelloWorld
前言 这一节我们使用Spring框架来编写一个简单的例子,无hello不框架。环境说明(1)JDK 1.8(2)开发工具:IntelliJ IDEA(3)maven:3.x一、Spring开发说明1.1 Spring使用方式 常见的有3中方式:(1)jar包方式;(2)maven/gradle方式;(2)Spring Boot方式; 这里Spring Boot不是我们这节的重点,所以采用maven的方式进行学习,...原创 2020-11-02 19:09:12 · 15833 阅读 · 2 评论 -
Spring入门到精通:第二章 IOC容器(XML方式):1.IOC概念
百度百科表述:控制反转(Inversion of Control,缩写为IOC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup,简称DL)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。 上面的描述看起来是不是根本不知道所以然,我们接下来...原创 2020-11-02 19:23:46 · 15649 阅读 · 0 评论 -
Spring入门到精通:第二章 IOC容器(XML方式):2.IOC演变
前言我们来看下IOC的演变历程,这里我们要明白设计的核心就是要降低耦合度。 假设我们有一个UserService和UserDao。准备工作 创建UserDao:package com.kfit.test.test3;public class UserDao { public void save(){ System.out.println("将用户信息进行保存到数据库."); }} 创建UserServ...原创 2020-11-02 19:26:30 · 15404 阅读 · 0 评论 -
Spring入门到精通:第二章 IOC容器(XML方式):3.IOC原理
前言 在前面我们讲到了IOC的一个演变,那么这节我们就看看IOC的一个原理。一、IOC底层原理使用核心技术 XML解析、工厂模式、反射。(DefaultSingletonBeanRegistry、AbstractBeanFactory、BeanFactory)二、IOC底层原理分析2.1 XML配置文件:配置创建的对象<bean id="userDao" class="com.kfit.test4.UserDao"></be...原创 2020-11-02 19:29:27 · 15785 阅读 · 0 评论 -
Spring入门到精通:第二章 IOC容器(XML方式):4.IOC容器Bean管理XML方式
这一节我们来看下使用XML的方式进行Bean管理。一、IOC操作-Bean管理1.1 什么是Bean管理(1)Spring创建对象(2)Spring注入属性1.2 Bean管理的两种方式(1)基于XML配置文件方式实现(2)基于注解方式实现 在接下里我们主要先讲一下基于XML方式的对象的创建和属性的注入。二、IOC操作Bean管理(基于XML方式)2.1 基于XML方式创建对象(1)在Spring配置文件中,使用bean标签,标签里添加对应...原创 2020-11-02 19:35:30 · 15991 阅读 · 0 评论 -
Spring入门到精通:第二章 IOC容器(XML方式):5.IOC容器Bean管理XML方式-注入属性
针对于注入属性,还有一些情况我们需要考虑,这一节我们就针对注入属性进一步进行学习和讲解下。一、注入属性-注入null值和特殊符号1.1 注入null值<property name="remark"><null /></property>2.2 注入特殊符号 一些特殊的符号,比如<>这样的,直接在value上配置是会报错的。(1)把<>进行转义:<、>;<property na...原创 2020-11-03 11:46:54 · 15378 阅读 · 0 评论 -
Spring入门到精通:第二章 IOC容器(XML方式):6.IOC容器Bean管理XML方式-工厂bean
Spring有两种类型bean,一种普通bean,另外一种工厂bean(FactoryBean)(1)普通bean:在配置文件中定义bean类型就是返回类型。(2)工厂bean:在配置文件定义bean类型可以和返回类型不一样。一、工厂bean1.1 步骤第一步:创建类实现接口FactoryBean。第二步:实现接口里的的方法,在实现的方法中定义返回的bean类型。(1)创建类实现接口FactoryBean:package com.kfit.test.test6;i.原创 2020-11-03 11:48:54 · 15777 阅读 · 0 评论 -
Spring入门到精通:第二章 IOC容器(XML方式):7.IOC容器Bean管理XML方式-bean作用域
(1)作用域:bean作用域用于确定哪种类型的bean实例应该从Spring容器中返回给调用者。。(2)在Spring里面,默认情况下bean是单实例对象。 作用域 描述 singleton 在springIoC容器仅存在一个Bean实例,Bean以单例方式存在,bean作用域范围的默认值。 prototype 每次从容器中调用Bean时,都返回一个新的实例,即每次调用getBean().原创 2020-11-03 11:50:19 · 15990 阅读 · 0 评论 -
Spring入门到精通:第二章 IOC容器(XML方式):8.IOC容器Bean管理XML方式-bean的生命周期
生命周期:对象从创建到销毁的过程。一、bean生命周期(1)通过构造方法创建bean实例(无参构造方法);(2)为bean的属性设置值和其它bean引用(调用set方法);(3)调用bean的初始化方法(需要进行配置初始化的方法);(4)使用bean(可以获取对象);(5)当容器关闭的时候,调用bean的销毁方法(需要进行配置销毁的方法)二、演示bean的生命周期(1)编写类package com.kfit.test.test7;/** * @au..原创 2020-11-03 11:52:43 · 15511 阅读 · 0 评论 -
Spring入门到精通:第二章 IOC容器(XML方式):9.IOC容器Bean管理XML方式-自动装配
自动装配能够简化我们的代码。一、自动装配自动装配:根据指定装配规则(属性名或者属性类型),Spring自动将匹配的属性值进行注入。 自动装配可以通过配置属性autowire,有两种自动装配方式,一种是byName,一种是byType。1.1 byName byName:通过属性名称进行注入bean,Spring会获取到属性的名称,然后通过属性的名称进行寻找bean id为属性的名称进行注入。<bean id="printerService1" class=...原创 2020-11-03 11:54:00 · 15674 阅读 · 0 评论 -
Spring入门到精通:第三章 IOC容器(注解方式):1. IOC容器Bean管理注解方式
在接下来的文章我们看下注解的方式。一、什么是注解(1)注解是代码特殊标记,格式:@注解名称(属性名称=属性值)(2)使用注解的地方:类、方法、属性。(3)使用注解的目的:简化XML配置二、Spring针对Bean管理中创建对象提供的注解(1)@Component:使用在普通组件上面;(2)@Service:业务逻辑层;(3)@Controller:使用在web层;(4)@Repository:使用在持久层; 上面四个注解功能是一样的,都可以用来创建b...原创 2020-11-03 11:58:15 · 15614 阅读 · 0 评论 -
Spring入门到精通:第三章 IOC容器(注解方式):2.IOC容器Bean管理注解方式-注入属性@Autowired
这一节我们讲一下如何注入属性一、属性注入的几个注解(1)@Autowired:根据属性类型进行注入(spring提供)(2)@Qualifier:根据属性名称进行注入,需要和@Autowired一起使用(3)@Resource:可以根据属性类型注入,也可以根据名称进行注入(java提供)(4)@Value:注入普通类型属性二、演示属性注入2.1 准备工作 我们编写一个UserDao来进行举例说明:package com.kfit.user.dao;...原创 2020-11-03 13:51:54 · 15546 阅读 · 0 评论 -
Spring入门到精通:第三章 IOC容器(注解方式):3.IOC容器Bean管理注解方式-注入属性@Value
这一节我看下如何注入外部配置文件的属性。一、@Value1.1 编写配置文件 编写一个resources/jdbc.properties配置文件:jdbc.driverClass = com.mysql.jdbc.Driverjdbc.url = jdbc:mysql://localhost:3306/mydbjdbc.username = rootjdbc.passowrd = root1.2 编写DbProperties.java 引入外部...原创 2020-11-03 13:56:52 · 15566 阅读 · 0 评论 -
Spring入门到精通:第三章 IOC容器(注解方式):4.IOC容器Bean管理注解方式-完全注解开发
在前面我们有些代码还是依赖于xml配置文件,那么是否可以完全注解开发呐?答案是可以的,这一节我们看下要如何操作。一、完全注解开发(1)创建配置类,替代xml配置文件(2)使用AnnotationConfigApplicationContext构造ApplicationContext二、演示完全注解开发(1)编写一个配置类,使用@Configuration标注这是一个配置类,使用@CompoonentScan配置要扫描的包:package com.kfit.config;..原创 2020-11-03 13:57:45 · 15525 阅读 · 0 评论 -
Spring入门到精通:第三章 IOC容器(注解方式):5.IOC容器小结
到这里我们对于IOC容器的知识进行一个小结。(1)IOC概念控制反转(Inversion of Control,缩写为IOC)(不是什么技术,而是一种设计思想):把对象的创建和对象之间的调用过程交给容器进行管理。IOC的两种实现:(1)DI(依赖注入):使用setter和Constructor将对象进行注入。(2)DL(依赖查找):用户自己去是使用 API 进行查找资源和组装对象,有侵入性。比如:使用JNDI查找是对象。(2)IOC原理XML解析、工厂模式、反射(3.原创 2020-11-03 13:59:43 · 15511 阅读 · 0 评论 -
Spring入门到精通:第四章 AOP:1.AOP基本概念
在接下里的章节中我们主要来介绍下Spring的另外一个特性AOP。一、为什么要有AOP我们都知道Java是一种面向对象编程【也就是OOP】的语言,不得不说面向对象编程是一种及其优秀的设计,但是任何语言都无法十全十美,对于OOP语言来说,当需要为部分对象引入公共部分的时候,OOP就会引入大量的重复代码【这些代码我们可以称之为横切代码】。 而这也是AOP出现的原因,没错,AOP就是被设计出来弥补OOP短板的。AOP便是将这些横切代码封装到一个可重用模块中,继而降低模块间的耦合度,这样也有...原创 2020-11-03 14:00:38 · 15572 阅读 · 0 评论 -
Spring入门到精通:第四章 AOP:2.AOP底层原理
在具体使用Spring AOP之前,我们来对于AOP的底层有一个基本的认知。一、底层原理(1)AOP底层原理:动态代理。(2)有两种情况动态代码。第一种:有接口情况,使用JDK动态代理 *创建接口实现类代理对象,增强类的方法。第二种:没有接口情况,使用CGLIB动态代理。 *创建子类代理对象,增强类的方法。二、JDK动态代理和CGLIB动态代理原理说明 我们通过一个计算器的小栗子来说明下JDK动态代理的原理。2.1 JDK...原创 2020-11-03 14:03:57 · 15509 阅读 · 0 评论 -
Spring入门到精通:第四章 AOP:3.AOP底层原理-JDK动态代理实现
这节我们通过JDK动态代理来对Spring AOP有一个更深的了解。一、JDK动态代理类 Java动态代理类位于java.lang.reflect包下,一般主要涉及到以下两个类:(1)Interface InvocationHandler:该接口中仅定义了一个方法public Object invoke(Object proxy, Method method, Object[] args)在实际使用时,第一个参数proxy一般是指代理类,method是被代理的方法,args...原创 2020-11-03 14:06:22 · 15847 阅读 · 0 评论 -
Spring入门到精通:第四章 AOP:4.AOP术语
这一节我们对于AOP中牵涉的术语有一个基本的认知。一、AOP术语(1)连接点(joinpoint)类里面哪些方法可以被增强,这些方法成为连接点。Spring只支持方法连接点,其他如AspectJ还可以让你在构造器或属性注入时都行,这里只要记住,和方法有关的前前后后(抛出异常)都是连接点。 在add和sub方法执行之前、执行之后、抛出异常、返回结果都是连接点。(2)切入点(pointcut) 实际被增强的方法,成为切入点。 上面说的连接...原创 2020-11-03 14:08:03 · 15852 阅读 · 0 评论 -
Spring入门到精通:第四章 AOP:5.AOP基于注解实现
这节我们看下注解的实现方式。一、AOP基于注解实现思路(1)添加AOP依赖:spring-aspects(包含aspectj);(2)开启AspectJ自动代理:@EnableAspectJAutoProxy;(3)编写切面:@AspectJ+@Component(4)测试二、AOP基于注解实现(1)添加AOP依赖:spring-aspects; 在pom.xml文件中添加如下依赖:<?xml version="1.0" encoding="UT...原创 2020-11-03 14:14:14 · 15783 阅读 · 0 评论 -
Spring入门到精通:第四章 AOP:6.AOP基于注解实现切点表达式优化
我们上面的例子虽然基本实现了AOP的功能,但是存在很多待优化的地方。一、切点表达式优化(1)切入点表达式统一化 现在我们在不同的通知上都使用了切点表达式,不同的地方一样的表达式,那么是否可以写在一个地方呢,当然可以了,只要使用@Pointcut进行注解一个方法是一个切入点即可:@Pointcut("execution(double com.kfit.user.service.CalculatorService.add(double,double))")public void ...原创 2020-11-03 14:19:24 · 15795 阅读 · 0 评论 -
Spring入门到精通:第四章 AOP:7.AOP基于注解实现@Pointcut
切面非常核心的一个配置就是@Pointcut,其它基本上没啥太大的变化。一、Pointcut的声明一个 pointcut 的声明由两部分组成:• 一个方法签名, 包括方法名和相关参数• 一个 pointcut 表达式, 用来指定哪些方法执行是我们感兴趣的(即因此可以织入 advice).在@AspectJ 风格的 AOP 中, 我们使用一个方法来描述 pointcut, 即://切点表达式@Pointcut("execution(* com.kfit.user.s...原创 2020-11-03 14:22:19 · 15625 阅读 · 0 评论 -
Spring入门到精通:第四章 AOP:8.AOP基于注解实现@Around和@Order
环绕通知(@Around):环绕通知相当于动态代理的全过程。一、@Around 我们直接看下代码:/** * 环绕通知:环绕通知相当于动态代理的全过程, * @param pjd */@Around(value="pointcut()")public Object arround(ProceedingJoinPoint pjd){ Object result = null; String methodName = pjd.getSignature()...原创 2020-11-03 14:24:27 · 15665 阅读 · 0 评论 -
Spring入门到精通:第四章 AOP:9.AOP基于XML实现
有了注解的实现,基于XML的实现就简单很多了。一、AOP基于XML实现思路(1)添加AOP依赖:spring-aspects;(2)编写切面:普通的Java类即可。(3)编写配置文件(4)测试二、AOP基于XML实现(1)添加AOP依赖:spring-aspects; 添加过了可以忽略:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apach...原创 2020-11-03 14:26:57 · 15654 阅读 · 0 评论 -
Spring入门到精通:第五章 JdbcTemplate:1.JdbcTemplate概述和准备工作(XML方式)
spring-jdbc 模块是 Spring 提供的 JDBC 抽象框架的主要实现模块, 用于简化 Spring JDBC。主要是提供 JDBC 模板方式、 关系数据库对象化方式、 SimpleJdbc 方式、 事务管理来简化 JDBC 编程, 主要实现类是 JdbcTemplate。 什么是JdbcTemplate? Spring框架对JDBC进行的封装,简化对数据库的操作。 对于JdbcTemplate怎么使用呢?一、JdbcTemplate的使用步骤(1)...原创 2020-11-03 14:28:55 · 15432 阅读 · 0 评论 -
Spring入门到精通:第五章 JdbcTemplate:2.JdbcTemplate准备工作(注解方式)
接下来我们看下注解的方式,毕竟之后我们以后大部分都是使用注解的方式进行开发了,所以我们看下注解的方式。一、JdbcTemplate的使用步骤(1)添加依赖:spring-jdbc、mysql驱动、druid数据源(2)配置数据源和JdbcTemplate(3)引入进行使用二、JdbcTemplate的使用(1)添加依赖:spring-jdbc、mysql驱动、druid数据源(已经引入了可以忽略)<!--↓↓↓ spring jdbc >> sta.原创 2020-11-03 14:30:29 · 15510 阅读 · 4 评论 -
Spring入门到精通:第五章 JdbcTemplate:3.JdbcTemplate操作数据库-增加功能
我们来先看下这个往数据库添加数据的操作。一、增加功能步骤(1)创建数据库:新建一个数据库spring5;(2)创建表:新建一张表book;(3)创建实体类:新建一个实体类Book;(4)创建接口BookDao和实现BookDaoImpl(5)创建接口BookService和实现BookServiceImpl(6)测试二、演示增加功能(1)创建数据库:新建一个数据库spring5;/**创建数据库*/CREATE DATABASE spring5;..原创 2020-11-03 14:34:05 · 15415 阅读 · 0 评论 -
Spring入门到精通:第五章 JdbcTemplate:4.JdbcTemplate操作数据库-修改和删除
有了新增数据的基础,再来学习修改和删除就简单很多了。一、演示修改和删除(1)BookDao新增修改和删除方法/**修改book*/void update(Book book);/**根据book的id进行删除*/void delete(int id);(2)BookDaoImpl新增修改和删除方法的实现public void update(Book book) { String sql = "update Book set name=?,author=?..原创 2020-11-03 14:36:08 · 15496 阅读 · 2 评论 -
Spring入门到精通:第五章 JdbcTemplate:5.JdbcTemplate操作数据库-查询操作
这一节我们来讲一下查询:(1)查询表有多少条记录;(2)查询某条数据;(3)查询所有记录;一、演示查询(1)在BookDao添加几个查询方法:/**查询表有多少条记录*/int selectCount();/**查询某条数据*/Book findOne(int id);/**查询所有记录*/List<Book> findAll();(2)在BookDaoImpl添加几个查询方法的实现:public int selectCount(..原创 2020-11-03 14:37:42 · 15654 阅读 · 0 评论 -
Spring入门到精通:第六章 Spring事务管理:1.事务的基本概念
前言通过本节,你将了解到:事务、本地事务、分布式事务这几个名词的基本概念。一、什么是事务? 什么是事务?1.1 举个生活中的例子去超市买东西,一手交钱,一手交货就是一个事务的例子。事务的体现:交钱和交货必须全部成功,事务才能算成功,任何一个活动失败,整个事务就失败了了。1.2 举个SQL例子 张三要给李四转账100元,那么我们会有这样的一段SQL:begin transaction; update account set money =...原创 2020-11-03 14:39:22 · 15406 阅读 · 0 评论 -
Spring入门到精通:第六章 Spring事务管理:2.事务的四大特性
前言 对于要把事务在实际中使用好,需要了解事务的特性。 事务的四大特性主要是:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一、事务的四大特性1.1 原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,事务中的操作要么全部成功,要么全部失败。比如在同一个事务中的SQL语句,要么全部执行成功,要么全部执行失败。begin transaction; updat...原创 2020-11-03 14:41:20 · 15441 阅读 · 0 评论 -
Spring入门到精通:第六章 Spring事务管理:3.事务的隔离级别
这一节我们来说一下事务的隔离级别一、事务不考虑隔离性可能会引发的问题 如果事务不考虑隔离性,可能会引发:脏读、不可重复读、幻读问题。(1)脏读脏读:指在一个事务处理过程里读取了另一个未提交的事务中的数据。当一个事务正在多次修改某个数据,而在这个事务中这多次的修改都还未提交,这时一个并发的事务来访问该数据,就会造成两个事务得到的数据不一致。 假设A向B转帐100元,对应sql语句如下所示 事务A:update account set money=mon...原创 2020-11-03 14:42:26 · 15534 阅读 · 0 评论 -
Spring入门到精通:第六章 Spring事务管理:4.事务操作-搭建事务操作环境
接下来我们会以张三给李四转账作为事务的例子来进行说明。 我们来分析下具体要做什么。一、张三给李四转账的思考(1)钱存在哪里? 张三要给李四转账,那么就需要一个账号表,有两条记录,存放张三和李四的钱。(2)转账的动作:张三钱减少,李四钱增加,那么就需要有两个方法,一个就是增加钱,一个就是减少钱了,当然一个方法也是可以实现的,通过负数和正数来解决。(3)转账的业务逻辑:我们需要有一个服务来处理转账的动作,也就是张三-100元,李四+100元的这个过程。二、张三给李四转账...原创 2020-11-03 14:58:26 · 15474 阅读 · 0 评论 -
Spring入门到精通:第六章 Spring事务管理:5.事务操作-场景引入和Spring事务管理介绍
上面的代码,如果正常执行的话没有什么问题的,但是如果代码执行过程中出现异常的话就有很大的问题了,就会出现数据不一致了。一、异常演示 我们在zhangsan扣减金额之后模拟一个异常来看下,代码如下:public void transferMoney() { //减少钱 accountDao.updateMoneyByName("zhangsan",new BigDecimal(-100)); //模拟异常... int i = 1/0;w ...原创 2020-11-03 15:08:24 · 15334 阅读 · 0 评论 -
Spring入门到精通:第六章 Spring事务管理:6.事务操作-Spring声明式事务管理(注解方式)
我们来看下使用配置的方式应该怎么做呢?一、注解方式声明式事务管理步骤(1)注入事务管理器:PlatformTransactionManager(2)启用注解事务管理:@EnableTransactionManagement(3)在方法或者类上添加事务注解@Transactional(4)测试二、演示注解方式声明式事务管理(1)注入事务管理器:PlatformTransactionManager 我们直接在DBConfig类上进行添加事务管理器...原创 2020-11-03 15:10:46 · 15362 阅读 · 0 评论 -
Spring入门到精通:第六章 Spring事务管理:7. 事务操作-Spring事务-事务参数
在@Transactional注解中有很多的属性可以进行配置,也就是事务参数,这一节我们来看下传播行为。一、事务参数 我们先看下都有什么参数可以配置呢?(1)transactionManager:事务管理器;(2)propagation:事务传播行为;(3)isolation:事务的隔离级别;(4)timeout:超时时间(5)readOnly:是否只读(6)rollbackFor:回滚(7)noRollbackFor:不回滚。1.1 事务传...原创 2020-11-03 15:12:40 · 15450 阅读 · 0 评论 -
Spring入门到精通:第六章 Spring事务管理:8.事务操作-Spring声明式事务管理(XML方式)
我们来看下XML方式如何进行配置呢?一、XML配置步骤说明 对于XML的配置核心就是配置文件,那么需要依赖于两个核心的命名空间tx和aop。(1)引入tx和aop的命名空间;(2)事务的配置;(3)编写转账;二、演示XML配置(1)引入tx和aop的命名空间;<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org...原创 2020-11-03 15:17:44 · 15564 阅读 · 0 评论 -
Spring入门到精通:第七章 SpringMVC:1.SpringMVC简介和工作流程
在接下来的章节我们会介绍下Spring MVC。一、MVCMVC是我们开发WEB应用程序的通用架构方式MVC的核心思想是业务数据抽取和业务数据呈现相分离。MVC:M(Model)+V(View)+C(Controller)M(模型层):业务数据的信息表示,通常是业务实体V(视图层):为用户呈现数据的页面C(控制层):调用业务逻辑产生合适的数据(Model),同时传递数据(Model)给视图层(View)呈现给用户MVC:是一种架构模式,将业务逻辑和页面展示分离,使程.原创 2020-11-03 15:19:43 · 15564 阅读 · 0 评论