18.5.3Sping 再次学习3

1.基于aspectjaop注解开发:

导入aop+aspectj一共四个jar

引入aop约束

编写目标类-将目标类配置到容器

开启自动注解代理:

Aspectjaop注解:

@aspect 定义切面类

@Before @After最终通知 @AfterReturning后置通知@AfterThrowing异常抛出

@pointcut定义切点注解

完整写一个切面类例子:

@component

@Aspect

public class  A{

@Before(A.c())

public void a(){

syso(1);

}

@pointcut(execution(* ----.-.point1(..)))

public void c(){};

}

2.spring只支持xml方式aop,所以使用注解aopaspectj方式)需要导入aopallianceaspectjweaver.jar包。(使用xmlaop需导入aop+aspects

变成切面类需要两步:

1)在类上使用@Component注解蒋类注入到容器

2)在类上使用@aspect注解蒋类生明为切面类

3.Spring的事务管理

Spring提供了持久类技术的模板类简化编程。

JDBC-jdbcTemplate

Hibernate3.0-HibernateTemplate

Mybatis-SqlMapClientTemplate

4.mysql-connector-java是数据库驱动
5.Spring-jdbc.jar功能;

提供了springjdbc的封装(jdbctemplate),语法类似于DButils

Spring-tx包功能:提供一致式的和编程式的事务管理。包括使用jdbctemplate也需要此包

Spring-test:对juint测试简单封装

6.使用jdbctemplate写一个测试:

DriverManagerDataSource dds=New DriverManagerDatasource();

dds.setDriverClassName(“”);

dds.setUrl(“”);

Dds.setpassword(“”);

Dds.setUsername(“”);

jdbcTemplate jt=New jdbcTemplate(dds);

Jt,insert(“”);

连接池配置给spring容器(配置spring内置的连接池):

测试类:

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration("classpath:applicationContext.xml")

public class User {

 

@Autowired

private JdbcTemplate jt;

@Test

public void getBean(){

jt.execute("insert into cccccc values (1,5)");

}

}

7.@RunWith什么作用:

@Runwith就是一个运行器

@RunWith(JUnit4.class)就是指用JUnit4来运行

@RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境(标记于类上)

使用了蓝色标记的,在直接使用juinttest测试时,不用配置web.xml文件,不用启动spring容器,它自动给我们创建了容器的上下文。

@ContextConfigurationSpring整合juint4测试时,使用此注解引入多个配置文件。(加在类上)(它是test包下的)

引入一个:@ContextConfiguretion“classpath:applicationContext.xml”)

8.spring配置c3p0连接池:

需要导一个c3p0jar

其它配置方式和上面的spring自带的池相同。(dbcp需要导入2个包)

9.对于jdbctemplatecrud操作:

插入:update

修改:update

删除:update

查询:queryForObject(,,11

10.事务的特性:

 1.原子性:事务不可分割

 2.事务执行前后的数据的完整性保持一致

 3.隔离性:一个事务的执行,不受其它事务的干扰。

 4.事务一旦结束,事务就持久到数据库

事务的隔离性引发的安全问题:

脏读:一个事务读到了另一个事务未提交的数据。

不可重复读:

虚幻读:

Msyql默认事务隔离级别是:可重复读,避免了脏读和不可重复读,虚读无法避免

Oracle默认是读已提交:避免了脏读

11.spring进行事务管理API

PlatFormtransactionManager:平台事务管理器。

使用SpringJDBCmybatis进行持久化操作时使用:***DataSourceTransactionManager

使用hibernate进行持久化操作:hibernateTransactionManager

TransactionDefinition:事务定义信息,传播、级别、是否只读

TransactionStatus:事务的状态

Spring是如何进行事务管理的,平台食物管理器根据定义的信息进行事务管理,在管理过程中会出现一些状态,将这些状态记录在transactionStatus中。

Spring的默认事务传播行为是:支持当前事务,如果不存在就新建一个。REQUIRED

12.spring的编程式事务:手动编写事务...

配置事务管理器:

配置事务管理的模板:

以上配置完之后,需要在业务层对象注入事务管理模板

此时可以手动完成事务编程....了解即可transactionTemplate.execute.......

Spring的声明式事务,xml方式。aop

引入aop四个包

配置事务管理器:transactionManager

配置事务通知:

<tx:advice id="txAdvice" transaction-manager="transactionManager">

<tx:attributes>

<tx:method name="ceshi" propagation="REQUIRED"/>

tx:attributes>

tx:advice>

配置aop事务:

 

Spring的声明式事务,注解方式。aop

引包,还是那几个

配置事务管理器DataSourceTransactionManager

开启注解事务管理

在需要使用事务的类上加入注解@Transactional

你可能感兴趣的:(Spring总结,spring)