Spring

3.24 spring 学习笔记

学习 spring , 先引入 依赖

spring-core.jar spring核心配置 , ioc , aop 均在这个包里

spring-beans.jar spring 处理 java 类的 工具包

spring-context.jar spring 上下文

spring-expression.jar spring 处理表达式

commons-logging.jar spring 的日志依赖的jar

注意 以上 spring 开头的jar 需要版本号 一致 具体看 pom.xml

mybatis 需要 mybatis-config.xml

spring 需要 applicationContext.xml

IOC 与 AOP

IOC: 控制反转 也 称为 依赖注入

AOP: 面向切面的编程

3.27 Spring ioc

spring ioc 的底层 应用的是 java 的反射机制

要求 每个bean 至少包含 2个 构造器, 其中 必须 得有 无参构造器

spring ioc 基于xml 方式-----重点

a.基于xml方式 get/set 注入属性 --- 属性 必须 得有 get/set

b.基于xml 方式, 构造方法 注入属性 ---- 必须得有 带参数的构造方法

c. 基于p命名空间 p---- property

需要为 spring的配置文件, 引入 p 命名空间

xmlns:p="http://www.springframework.org/schema/p"

然后呢 通过 p:属性名="值" 进行 注入

模拟 java web 中 service 调用 dao

练习:

创建 spring1_2 module

实现 service 调用 dao 实现 员工的增加

显示方式: 控制台 打印输出 service -----add, dao--------add

总结:

基于xml 方式:

在spring的配置文件中 ,要配置 bean 的class 为 实现类 而不是 接口

在 测试类中, 通过 多态的向下转型 来获得 接口实例

接口类型 对象名= context.getBean();

spring 创建bean 的生命周期:

通过 Dept.java 来举例

  1. 调用无参构造

  2. 调用属性的set 方法

  3. 调用 init-method 对应的方法,进行初始化

  4. 做具体的操作

  5. 调用 destroy-method对应的方法,进行销毁

spring 的自动装配, 为 bean 标签 增加 autowire属性 , 该属性 有2个值 byName, byType

自动装配分为 2种, 基于 名字 或者 类型

a.基于名字的自动装配 autowire="byName"

注入时, 属性名 必须为 另一个bean的 id 属性

b.基于类型的自动装配 autowire="byType"

注入时, 属性名 可以与bean的id 属性 不一致, 因为按照类型 匹配

spring 配置 数据源,

引入 druid.jar

编写 db.properties

编写spring 的配置文件

spring ioc 基于 注解方式-----重点

注解: 简化 java 配置

@Override 重写

@NoArgsConstructor

@AllArgsConstructor

@Data

@ToString

进行 包的扫描

<context:component-scan base-package="dao,service"/>

@Autowired 通过 类型注入 byType

@Qualifier("bean的id") // 按照 名字映射 byName

service 调用 dao 来做示例

3.28 AOP

IOC: 控制反转

AOP: 面向切面的编程,

通俗的说,在不改变源代码的情况下 增加新功能.

AOP 实现代理的形式 有 jdk 动态代理与 cglib代理

当项目中有 接口时, 采用 jdk 动态代理

若没有接口 , 采用 cglib 动态代理

以 DeptDao.java 为例

基于xml 的 aop 的步骤:

内容: 调用 User.java 中的print() 方法时, 打印另外的输出内容 ---采用 aop 方式 实现

a. 引入 jar,

spring-aop.jar , aspectjweaver.jar

b. 编写 两个类, User.java 定义 print() 方法 ,

UserProxy.java 定义 beforeInvoke()方法;

c. 在 spring 的配置文件中 增加 aop 配置

引入 aop 的命名空间

增加 <aop:config>

在这个标签里 配置 切入点与切面

切入点 配置 User.java 定义 print()

切面 配置 UserProxy.java 定义 beforeInvoke()方法 并定义 通知类型

相关推荐
高山上有一只小老虎2 小时前
mybatisplus实现分页查询
java·spring boot·mybatis
独自破碎E7 小时前
MyBatis Flex和MyBatis Plus的区别
java·开发语言·mybatis
小北方城市网7 小时前
MySQL 索引优化实战:从慢查询到高性能
数据库·spring boot·后端·mysql·rabbitmq·mybatis·java-rabbitmq
小北方城市网9 小时前
生产级 Spring Boot + MyBatis 核心配置模板
java·spring boot·redis·后端·spring·性能优化·mybatis
二等饼干~za89866811 小时前
Geo优化源码开发:关键技术解析与实践
数据库·sql·重构·mybatis·音视频
WZTTMoon11 小时前
MyBatis SQL执行流程详解
sql·mybatis
消失的旧时光-194312 小时前
第六课 · 6.1 从 JDBC 到 MyBatis:SQL 工程化是如何发生的?
java·sql·mybatis
熊出没13 小时前
关于MyBatis Mapper 接口与 XML 映射机制的分析
xml·microsoft·mybatis
小北方城市网13 小时前
MyBatis 进阶实战:插件开发与性能优化
数据库·redis·python·elasticsearch·缓存·性能优化·mybatis
panzer_maus1 天前
Redis简单介绍(3)-持久化的实现
java·redis·mybatis