Spring笔记 Day03

    xiaoxiao2025-06-26  6

    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.嵌套事务

    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(); ​ } ​ }

    最新回复(0)