# SpringDemo204 **Repository Path**: nieps/spring-demo204 ## Basic Information - **Project Name**: SpringDemo204 - **Description**: 204java班Spring 案例 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-12-06 - **Last Updated**: 2022-12-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 笔记 ## 前言 框架: * spring 整合其它框架,管理bean , 致力于 Java EE 应用各层的解决方案,对每一层都提供了技术支持 > 说一下你对spring的认识? > > spring的核心 是什么 IOC AOP > > 开发技术演变: > > 1. jsp/servlet -----jsp+javabean > > MVC模型: > > Dao 数据访问层,里面封装了数据库基本的crud (持久层、hibernate/mybatis....) > > M model 业务层 业务逻辑 ,调用数据访问层 > > > 模拟下单: > > > > * 生成订单 -----访问订单dao 保存订单 > > * 生成订单明细----访问订单明细dao > > * 更新商品库存-----访问商品dao > > * 更新会员积分----访问积分dao > > * ...... > > V view 视图 jsp 显示内容 的 (交给产端处理) > > C controller控制层 接收用户请求,调用 业务逻辑,根据结果跳转到相应 的视图 > > 2. ssh: spring struts1(核心是ActionServlet) hibernate (orm映射框架) > > ssi: spring struts1 ibatis(半自动化的orm框架,写sql语句,框架封装结果) 现在称为mybatis > > ssm: m---mybatis > > 3. ssh/m 中间s变了 structs2 (webwork) > 4. ssh/m 中间s又变了 spring mvc * Spring MVC > 专注于 web开发 * MyBatis 自己写sql * MyBatis-Plus 与hibernate(hql语言)非常相似 操作的是实体类,生成sql ## Spring EJB flash霸占 -----servlet applet spring1.0 是一个jar包 ,包含了所有的功能 耦合度低: A类依赖List 接口 * ArrayList * LInkedList 关于bean的管理: * 基于xml的管理 带来大量的配置 * 基于注解的配置(开发中常用的) 什么是事物?事物 的特性是什么? ACID ## IOC原理 工厂类+反射实现 定义类: User xml管理声明bean的定义 ApplicationContext 工厂 类获取bean的实例 ## 单例模式 只有一个实例 ,实现方式: * 饿汉式 类加载的时候直接实例化, 用的时候返回,不用就放那 * 懒汉式 调用的时候如果不存在实例化 ## applicationContext ![image-20221206164510223](assets/image-20221206164510223.png) spring mvc 中,有一个继承类 WebApplicationContext 接口 ,专门处理web应用。 ## 用户管理 共同的属性:用户名 密码... * 企业账号 法人 营业执照... * 个人账号 性别 年龄 ## autowire自动装配 * no 不自动装配,需要手动配置依赖关系 (默认的) * byName 根据名称自动装配,根据bean中的属性名称,去容器中找有没有同名称的bean,如果有注入 * byType 根据bean中属性的类型自动装配,如果容器有与bean中属性同类型的bean会自动注入,但如果有多个同类型的,会报错。 * construtor 根据bean中的构造 函数参数类型自动装配 * default 会采用与beans根元素中的default-autowirte的值来装配 ## bean属性 你需要掌握的: * id/name * class * autowire > 如果出现注入冲突,考虑 > > * autowire-candidate > * primary ## 注入 属性说明: * value 指定字符串类型的值 * ref 引用其它的bean ## AOP原理 原理就是动态代理 ### 静态代理 静态代理在使用时,需要定义接口或者父类,被代理对象(即目标对象)与代理对象一起实现相同的接口或者是继承相同父类 ![image-20221208155201062](assets/image-20221208155201062.png) 泛型:类型参数化 ## aop配置 ![image-20221209092549122](assets/image-20221209092549122.png) ## SQL * ddl 数据定义语言 创建表 修改表... * dml 数据操作语言 insert update delete select ## JdbcTemlate ### 常用方法 - execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句; - update方法:update方法用于执行新增、修改、删除等语句; - batchUpdate方法:batchUpdate方法用于执行批处理相关语句; - query方法及queryForXXX方法:用于执行查询相关语句; - call方法:用于执行存储过程、函数相关语句。 ### 参数类型介绍 * ConnectionCallback 连接回调 获取数据库连接 * StatementCallback 获取Statement语句回调 * PreparedStatementCallback 获取PreparedStatement语句的回调 * PreparedStatementCreator 用连接Connection创建PreparedStatement并返回 * RowMapper 用于将ResultSet中一行记录映射成为指定的结果(如map、javabean) * ResultSetExtractor 用于将ResultSet结果集转换为指定类型的 回调接口 * RowCallbackHandler 逐行处理ResultSet中的行 ## 异常 * 编译期异常 * 运行时异常 ## 事务 事务与aop的关系 ![image-20221213112959793](assets/image-20221213112959793.png)