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

相关推荐
与秋逐鹿¥3 小时前
在Mybatis中为什么要同时指定扫描mapper接口和 mapper.xml 文件,理论单独扫描 xml 文件就可以啊
java·tomcat·mybatis
爱的叹息3 小时前
MyBatis 插件开发的完整详细例子
mybatis
Minyy119 小时前
SpringBoot程序的创建以及特点,配置文件,LogBack记录日志,配置过滤器、拦截器、全局异常
xml·java·spring boot·后端·spring·mybatis·logback
北辰浮光16 小时前
[Mybatis-plus]
java·开发语言·mybatis
方圆想当图灵17 小时前
由 Mybatis 源码畅谈软件设计(七):SQL “染色” 拦截器实战
后端·mybatis·代码规范
毅航17 小时前
MyBatis 事务管理:一文掌握Mybatis事务管理核心逻辑
java·后端·mybatis
啊松同学1 天前
【Mybatis】MyBatisPlus的saveBatch真的是批量插入吗?深度解析与性能优化
java·后端·性能优化·mybatis
阿里小阿希1 天前
解决 Spring Boot + MyBatis 项目迁移到 PostgreSQL 后的数据类型不匹配问题
spring boot·postgresql·mybatis
凯酱1 天前
MyBatis-Plus分页插件的使用
java·tomcat·mybatis
我是福福大王1 天前
MyBatis源码学习总结
后端·mybatis