Spring框架第三讲

来源:互联网 发布:网络大v的责任 编辑:程序博客网 时间:2024/04/29 11:08

概述:主要讲解如何使用Aspectj进行AOP开发、如何使用pojo+xml开发AOPspring来征服数据库jdbc

一、使用Aspectj进行AOP开发

a) 首先导入jar支持

Aspectjrt.jar

aspectjweaver.jar

b) 修改xml配置文件

i. 增加aop schema

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:aop="http://www.springframework.org/schema/aop"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">

</beans>

ii. 激活注解,启动所有注解

<!--激活注解的使用 -->

<aop:aspectj-autoproxy/>

c) 编写java类,并用@Aspect注解成通知

i. 注解简介

 AspectJ 支持 种类型的通知注解

  @Before: 前置通知在方法执行之前执行

  @After: 后置通知在方法执行之后执行 

  @AfterReturning: 返回通知在方法返回结果之后执行

  @AfterThrowing: 异常通知在方法抛出异常之后

  @Around: 环绕通知围绕着方法执行

ii. 参数讲解

@Pointcut("execution(* cn.csdn..*.work(..))")

修饰符  第一个*返回值类型   

第二个*(包名+类名)work(..) 

..参数任意

iii. 声明切入点

@Pointcut("execution(* cn.csdn..*.work(..))")

public void disp(){}

iv. 其他方法引入切入点方法

@Before("disp()")

public void getUp() {

System.out.println("...............懒虫该起床了.");

}

v. 在配置文件中配置这个类

    <!-- 声明通知 -->

   <bean id="aspectUtil" class="cn.csdn.advice.AspectUtil"/>

二、使用pojo+xml开发AOP

首先定义好自己java的类,里面有相应的通知的方法然后则就可以配置xml来完成功能

<!--切面的bean的声明-->

<bean id="adviceUtil" class="cn.csdn.advice.AdviceUtil"/>

<!--aop的配置 包括通知和切面-->

<aop:config>

<!--配置一个切入点-->

<aop:pointcut expression="execution(* *.*word(..))" id="myPointcut"/>

<!--配置一个带有参数的连接点-->

<aop:pointcut expression="execution(* *.*word(..)) and args(name,pass)" id="myPointcut1"/>

<!--配置切面-->

<aop:aspect ref="adviceUtil">

<!--配置前置通知-->

<aop:before method="getUp" pointcut-ref="myPointcut" />

<!--配置环绕通知 方法中需要有 ProceedingJoinPoint的参数-->

<aop:around method="punchCard" pointcut-ref="myPointcut"/>

<!--配置后置通知-->

<aop:after method="goHome" pointcut-ref="myPointcut" />

<!--配置返回通知  returning指定返回值的参数-->

<aop:after-returning method="back" pointcut-ref="myPointcut" returning="ss" />

<!--配置异常通知  throwing指定异常对象参数-->

<aop:after-throwing method="unWell" pointcut-ref="myPointcut" throwing="ex" />

<!-- 引入通知 -->

<aop:declare-parents types-matching="*..EmployeeServiceBean"

implement-interface="cn.csdn.advice.Auditable" default-impl="cn.csdn.advice.AuditableAdvice" />

<!--配置前置通知。 带有参数-->

<aop:before method="checkLogin" pointcut-ref="myPointcut1"/>

</aop:aspect>

</aop:config>

三、征服数据库jdbc

a) 引入jar支持

commons-dbcp.jar

commons-pool.jar

mysql-connector-java-5.1.16-bin.jar sql的驱动jar包,如果是oracle或其他的,请自行更换对应的驱动jar

b) 创建配置文件,用来存储数据源的信息

driverClassName=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/spring

username=root

password=123456

<context:property-placeholder location="jdbc.properties" />

c) 然后在xml配置数据源

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">

<property name="driverClassName">

<value>${driverClassName}</value>

</property>

<property name="url">

<value>${url}</value>

</property>

<property name="username">

<value>${username}</value>

</property>

<property name="password">

<value>${password}</value>

</property>

</bean>

d) 配置jdbcTemplate模板类,导入数据源

 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">

      <property name="dataSource" ref="dataSource"/>

</bean>

e) 创建DaoDaoImpl实现类  并在配置文件进行配置

   <!-- 注入到Dao操作实现类中 -->

   <bean id="adminDaoImpl" class="cn.csdn.dao.AdminDaoImpl">

       <!-- 注入模板类对象 -->

       <property name="jdbcTemplate" ref="jdbcTemplate"/>

   </bean>

f) 然后就可以实现处理了,使用query查询来得到数据库中的数据

public List<Admin> findAll() {

//使用模板类对象

List<Admin> admins = jdbcTemplate.query("select id,name from admin"new RowMapper() {

@Override

public Object mapRow(ResultSet rs, int rowNum) throws SQLException {

     Admin admin = new Admin();

     admin.setId(rs.getInt("id"));

     admin.setName(rs.getString("name"));

return admin;

}

});

return admins;

}

g) Spring提供需要jdbc的模版对象,可以根据自己的需要来使用,只要将数据源注入进入就可以来使用该对象做自己的Dao处理。比如NamedParameterJdbcTemplateSimpleJdbcTemplate对象。也可以不用在Dao生成该对象的实例,可以直接继承于JdbcDaoSupportNamedParameterJdbcDaoSupportSimpleJdbcDaoSupport该类,则使用get方法就可以得到模块对象来对做处理

原创粉丝点击