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()方法 并定义 通知类型

相关推荐
Devin~Y8 小时前
从内容社区到AI智能客服:Spring Boot + Spring Cloud + Spring AI 全栈实战面试拆解
java·spring boot·redis·elasticsearch·spring cloud·kafka·mybatis
丶意冷20 小时前
OceanBase 双模式识别与 MyBatis-Plus 分页方言自动切换实战
mybatis·oceanbase
lv__pf1 天前
spring之整合mybatis【TL spring 12】
mysql·spring·mybatis
ChaHae-In2 天前
MyBatis动态SQL与MyBatis-Plus高效开发指南
数据库·oracle·mybatis
csdn2015_2 天前
springboot +mybatis 查询myql开启程序级别缓存
spring boot·缓存·mybatis
C++、Java和Python的菜鸟3 天前
第1章 项目前置课-Mybatis-Plus
mybatis
jaysee-sjc3 天前
【JavaWeb】Tlias智能学习辅助系统|后端Web实战(登录认证)
java·开发语言·前端·学习·mybatis
步行cgn3 天前
MyBatis 动态 SQL 完全指南
sql·tomcat·mybatis
步行cgn4 天前
错误:Invalid bound statement (not found) 详解与解决方案
mybatis
sugar__salt4 天前
MyBatis-Plus 从入门到实战:高效简化数据库开发的完整指南
数据库·spring boot·mybatis·数据库开发