Open tianyou168 opened 3 years ago
课程总结 1.Spring框架概述 (1)轻量级开源JavaEE框架,为了解决企业复杂性,俩个核心组成:IOC和AOP (2)Spring5.2.6框架 2.IOC容器 (1)IOC底层原理(工厂,反射等) (2)IOC接口(BeanFactory) (3)IOC操作Bean管理(基于xml) (4)IOC操作Bean管理(基于注解) 3.AOP (1)AOP底层原理:动态代理,有接口(JDK动态代理)没有接口(CGLB动态代理) (2)术语:切入点、增强、切面 (3)基于AspectJ实现AOP操作
4.JDBCTemplate
(1)使用jdbcTemplate实现数据库curd操作
(2)使用jdbcTemplate实现数据库批量操作
5.事务管理
(1)事务概念
(2)重要概念(传播行为和隔离级别)
(3)基于注解实现声明式事务管理
(4)完全注解方式实现声明式事务管理
6.Spring5新功能
(1)整合日志框架
(2)@Nollable注解
(3)函数式注册对象
(4)整合JUnit5单元测试框架
(5)SpringWebflux使用
1、Spring概念 spring框架概述: 1、Spring是轻量级的开源的JavaEE框架 2、Spring可以解决企业应用开发的复杂性 3、Spring 有俩个核心部分:IOC和Aop (1)、IOC:控制反转 把创建的对象过程交给Spring进行管理 (2)、Aop:面向切面,不修改源代码进行功能增强 4、Spring特点: (1)方便解耦,简化开发 (2)Aop编程支持 (3) 方便程序测试 (4)方便和其他框架进行整合 (5)方便进行事务操作 (6)降低API开发难度 (7) 5、使用spring版本5.x 1、下载spring5 地址:https://repo.spring.io/release/org/springframework/spring/ 2、打开idea 创建Java工程 3、导入Spring5相关的jar包 beans context core expression 4、创建普通类,在这个类创建普通方法 5、创建Spring配置文件,在配置文件配置创建的对象 ' '
ApplicationContext context = new ClassPathXmlApplicationContext("beanl.xml")
2、IOC容器
IOC 容器
(1)IOC底层原理
1、什么是IOC
控制反转(inversion of Control) 把对象创建和对象之间的调用过程,交给Spring管理
使用IOC目的:为了耦合度降低
前面练习操作的就是IOC实现
2、底层原理
(1)xml解析、工厂模式、反射
//原始方式 创建对象 调用方法
class UserService{
execute(){
UserDao dao = new UserDao();
dao.add();
}
}
class UserDao{
add(){
......
}
}
耦合度太高
解决办法: 工厂模式 class UserService { execute(){ UserDao dao = UserFactory.getDao(); dao.add(); } } class UserDao{ add(){ ..... } } class UserFactory{ public static UserDao getDao(){ return new UserDao(); } } 目的: 耦合度降低最低限度
ioc过程 第一步 xml配置文件 配置创建的对象
第二步 有service和dao类 创建工厂类
class UserFactory{
public static UserDao getDao(){
String classValue = class属性值;//xml解析
Class clazz = Class.forName(classValue);//通过反射创建对象
return (UserDao)clazz.newInstance();
}
}
(2)IOC接口(beanFactory)
1、IOC思想基于IOC容器完成,IOC容器底层就是对象工厂
2、Spring提供IOC容器实现俩中方式:(俩个接口)
BeanFactory
ioc容器基本实现方式,是spring内部的使用接口,不提供开发人员使用
加载配置文件时候不会创建对象,在获取对象(使用)才去创建对象
ApplicationContext
BeanFactory接口的子接口,提供了更多更强大的功能,一般面向开发人员进行使用
加载配置文件的时候就会把在配置文件对象进行创建
3、ApplicationContext 接口有实现类
ApplicationContext (interface)
ConfigurableApplicationContext (interface)
AbstractApplicationContext (class)
AbstractRefreshableApplicationContext (class)
AbstractRefreshableConfigApplicationContext (class)
AbstractXmlApplicationContext (class)
FileSystemXmlApplicationContext (class) 表示文件全路径
ClassPathXmlApplicationContext (class) 表示类路径
BeanFactory(interface)
ConfigurableApplicationContext
(3)IOC操作bean管理(基于xml)
1、什么是Bean管理(bean管理指的是俩个操作)
Spring创建对象
Spring注入属性
2、Bean管理操作有俩种方式
(1)基于xml方式创建
在Spring配置文件中,使用bean标签,标签里面添加对应属性,就可以实现对象创建
在bean标签有很多属性,
id 属性:唯一标识 , class属性:类全路径(包类路径) name属性:和ID一样的的效果 区别可以加/符号
创建对象时候,默认也是执行无参数构造方法完成对象创建
(2)基于xml方式注入属性
DI:依赖注入,就是注入属性
第一种方式:使用set方法注入
创建类,定义属性和对应的set方法
在spring配置文件配置对象创建,配置属性注入
(4)IOC操作bean管理(基于注解) 1、注入数组类型属性 class a{ private String[] courses; } 2、注入list集合类型属性 class a{ private List list;
}
3、注入map集合类型属性
class a{
private Map<String,String> maps;
private Set sets;
}
3、AOP 1.什么是AOP? (1)面向切面编程(方面)利用AOP可以对业务逻辑的各个部分进行隔离 ,从而使得业务逻辑各部分之间的耦合度降低提高程序的可重用性,同时 提高了开发效率。 (2)描述:不通过修改源代码方式添加新的功能,在主干功能里面添加新的功能 (3)使用登陆例子说明AOP 用户密码==>数据库查询==>判断是否成功 失败==>重新输入密码 成功==>进入主页面 在登陆功能基础之上添加功能 权限判断 原始方式:修改源代码实现 if管理员 else if普通用户 不通过修改源代码方式添加新的功能,在主干功能里面添加新的功能 权限判断模块 AOP(底层原理) 1.AOP底层使用动态代理 (1)有俩种情况动态代理 第一种有接口的情况 使用jdk动态代理 interface UserDao{ public void login(); } class UserDaoImpl implements UserDao { public void login(){ } } 创建UserDao接口实现类代理对象,增强类的方法 第二种 没有接口情况 使用CGLB动态代理 class User{ public void add(){ ........ } } class Person extends User{ public void add(){ super.add(); //增强逻辑 } } 1 创建当前类子类的代理对象 ,增强类的方法 AOP(JDK动态代理) 1.使用JDK动态代理,使用proxy类里面的方法创建代理对象 Java.lang.refletct Class Proxy java.lang.Object java.lang.reflect.Proxy (1)调用newProxyInstans方法 static Object newProxyInstance(ClassLoader loader, 类<?>[] interfaces,InvocationHandler h) 返回指定接口的代理类的实例,该接口将方法调用分派给指定的调用处理程序。 方法有三个参数 第一参数,类加载器 第二参数,增强方法所在的类,这个类实现的接口,支持多个接口 第三参数,实现这个接口invocationHandler,创建代理对象,写增强的部分
4、JdbcTemplate JdbcTemplate(准备) 1.什么是jdbcTemplate (1)Spring框架对JDBC进行封装,使用jdbcTemplate方便实现对数据库操作
5、事务管理 事务概念 1.什么是事务 (1)事务是数据库操作最基本单元,逻辑上一组操作,要么都成功,如果有一个失败所有操作都失败 (2)典型场景,银行转账; lucy 转账100元 给mary lucy 少100 mary多100 2.事务四个特性 (1)原子性 (2)一致性 (3)持久性 (4)隔离性