欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring笔记 Day03

程序员文章站 2022-06-10 16:07:14
...

Spring的AOP的开发(AspectJ的注解方式)

AOP 模块提供了面向方面的编程实现,允许你定义方法拦截器和切入点对代码进行干净地解耦,从而使实现功能的代码彻底的解耦出来

aop的底层实现

如果采用接口 Spring底层自动采用jdbc动态代理

如果没有采用Cjlib动态代理

aop注解入门开发:

1.将目标类和切面类交给spring管理

2.
<aop:aspectj-autoproxy />

3.在切面类中添加注解@Aspect和对应的通知注解

@Before(value=“切入点表达式”)

后置通知: 无论是否有错误都会执行通知

当需要多处用一个方法加强时

可以直接定义切入点注释

然后在别的加强方法中直接调用

//切入点注释 
@Pointcut(value="execution(* com.UserDao.UserDao.thoww(..))")
public void pointcut1() {}

Spring的JDBC的模板的使用

com.demo1

jdbcDemo1:传统的jdbc模板的写法

jdbcDemo2:通过Spring内部配置的jdbc模板写法 (jdbc dbcp c3p0分别测试)

引入jar

1.一般用法类似于dbutils

2.将连接池的配置将给spring

​ 通过属性注入完成 注册驱动 url username/password

3.将jdbc 的模板交给spring管理

​ 将连接池通过属性注入到jdbc的模板中

4.在测试类中 通过注解得到 jdbcTemplate 完成数据库操作

使用开源连接池

dbcp:

c3p0:

​ 用于将类交给spring管理、属性注入、直接在测试类中用jdbc模板

抽取数据库配置从xml中提取出来

1.new file

2.xml中引入属性文件

​ 第一种方式 通过bean标签(应用少)

classpath 路径:src路径下的文件在编译后会放到WEB-INF/classes路径下吧。默认的classpath是在这里。直接放到WEB-INF下的话,是不在classpath下的。用ClassPathXmlApplicationContext当然获取不到

​ 第二种方式:通过context标签引用(一般采用)

<context:property-placeholder location=“classpath:jdbc.properties”/>

​ 通过引用属性文件;

​ 然后在value中输入${key值}

通过jdbc模板进行CRUD操作 --添删改查

返回对象

返回值是一个对象时 采用接口方式封装对象

RowMapper 内置方法将结果放置到结果集中然后set到自定义类中

Spring的事务管理

com.demo2 事务管理编写

复习事务

Spring进行事务管理的时候,首先***平台事务管理器***根据***事务定义信息***进行事务管理,在事务管理过程中,产生各种状态,将这些状态的信息记录到***事务状态***的对象中。

平台事务管理器:接口,是Spring用于管理事务真正的对象!

​ DataSourceTransactionManager:底层使用jdbc管理事务

事务定义信息:用于定义事务的相关信息:隔离级别,超时信息,传播行为,是否只读 TransactionDefinition

事务状态:用于记录在事务管理过程中,事务状态的对象TransactionStatus

传播行为:

​ Spring中提供了七种传播行为

事务的传播行为主要用来解决业务方法互相调用的问题

分为三类 : 1.保证多个操作是在同一个事务中,

​ 2.保证多个操作不在同一个事务中,

​ 3.嵌套事务

Spring笔记 Day03

propagation requierd 默认值

requires new

nested

搭建Spring的事务管理的环境

转账案例:SpringDay_03-jdbc-demo2

​ 1.Service

​ 2.Dao

​ 3.application

添加事务:

一:编程式事务

​ 1.配置平台事务管理器

​ 2.配置事务管理模板(简化事务编写代码)

​ 3.在业务层注入事务管理的模板

​ 4.编写事务管理代码

二:声明式事务管理

​ ①xml方式的声明式事务管理

​ 基于aop aspectj的开发 引入相关包:

​ aspects.jar aop.jar aopalliance.jar aspectj.weaver.jar

​ 恢复转账环境 新建包 con.jdbc.demo3

​ 1.配置事务管理器

​ 2.配置事务的增强

​ 3.将增强应用到目标类(aop的配置方式)

​ ②注解方式声明事务管理

​ 恢复转账环境 新建包 con.jdbc.demo4

​ 1.配置事务管理器

​ 2.开启注解事务

​ 3.在业务层上添加注解

继承 JdbcDaoSupport

​ JdbcDaoSupport中默认创建了jdbc模板和传入dataSource所以 在配置DAo时直接继承JdbcDaoSupport在配置文件中配置dataSource!

public final void setDataSource(DataSource dataSource) {
​ if (this.jdbcTemplate == null || dataSource != this.jdbcTemplate.getDataSource()) {
​ this.jdbcTemplate = createJdbcTemplate(dataSource);
​ initTemplateConfig();
​ }
​ }