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

相关推荐
大漠孤烟s11 小时前
4.Mybatis学习-动态sql、缓存、逆向工程
mybatis
毕业设计7032 天前
(免费领源码) SpringBoot 游戏交易平台17600-java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
java·spring boot·mysql·决策树·mybatis·idea·推荐算法
程序员JerrySUN2 天前
Jetson Edge AI 实战01:Nano、Xavier、Orin 怎么选?Jetson 硬件选型详解【视频讲解】
java·数据库·redis·安全·mybatis
linmengmeng_13142 天前
【总结】MyBatis-Plus批量插入与清表的正确姿势
java·spring boot·mysql·mybatis
vx_BS813303 天前
【项目编号:project51381】Spring Boot 婚纱摄影管理系统:套餐预约、在线咨询、支付与客片展示的一站式业务实现
java·spring boot·eclipse·tomcat·mybatis
jaysee-sjc4 天前
【苍穹外卖】Day01:从零认识企业级项目开发
java·开发语言·数据库·mysql·spring·intellij-idea·mybatis
程序猿乐锅4 天前
【黑马点评 | 第二篇】Redis 缓存更新策略与商铺缓存实现
java·网络·redis·spring·mybatis
萧瑟余晖4 天前
MyBatis 核心原理详解
架构·mybatis
MZA6664 天前
实战:基于 XXL-JOB + 策略模式 + Nacos 配置化的 CSV 导出任务系统设计
java·spring boot·mybatis
干到60岁退休的码农6 天前
15.创建获取用户接口与JWT认证器
java·spring boot·mybatis