基于Spring和AOP的数据库认证日志的设计与实现

时间:2022-07-30 10:11:35

基于Spring和AOP的数据库认证日志的设计与实现

摘要:项目开发中,类似于数据库验证、参数合法性验证、异常处理、事务控制等的业务处理方法有很多,而他们的健壮性直接影响着整个项目的健壮性。在以前的开发中,就要反反复复地写每个业务的代码,为解决这些繁琐的方方面面的代码编写,Spring中的AOP应运而生,将程序中涉及的公共业务问题分离成一个个方面,很好地利用方面编程解决了这些问题。

关键词:Spring;AOP;数据库认证;日志管理

中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)09-1982-02

Design and Implementation of Log about Database User Authentication Base on Spring and AOP

CHEN Huan-ying, MA Jing-jie

(Henan Quantity Engineering Occupation College, Pingdingshan 467001, China)

Abstract: There is a lot of businesses like database authentication, parameter's validation and abnormal process in the project development. The robustness of project is affected by their robustness. Using the old development, we describe repeatedservice code. The Spring and AOP can resolve these problems. The aspect is separated from topical business in progrom, using the aspect can efficiently solve the repetitive work.

Key words: Spring;AOP;database authentication;log administration

1 概述

1.1 什么是Spring

Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

Spring框架是一个分层架构,由 7 个定义良好的模块组成[1]。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,如图1所示。

组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:

1) 核心容器:核心容器提供 Spring 框架的基本功能。

2) Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。

3) Spring AOP:Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。

4) Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。

5) Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具。

6) Spring Web 模块:Web上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。

7) Spring MVC 框架:MVC框架是一个全功能的构建 Web 应用程序的 MVC 实现。

1.2什么是AOP[2]

AOP――Aspect Oriented Programming, 简称AOP,面向方面/切面的编程。AOP是一种编程模式,提供从另一个角度来考虑程序结构以完善面向对象编程(OOP)。AOP为开发者提供了一种描述横切关注点的机制,并能够自动将横切关注点织入到面向对象的软件系统中,从而实现了横切关注点的模块化。日志、事务、安全验证等这些通用的、散步在系统各处的需要在实现业务时关注的事情就称为“方面”,也称为“关注点”。

2 AOP的实现原理

项目开发中一般的业务处理有记录日志,合法性检验等。

1) 将业务系统中这些日志、事务、安全验证等操作分离为单个的方面,集中处理,如图2所示。

实现特定功能的方面代码在AOP概念中又称为“通知(Adivice)”,通知分为前置通知、后置通知、环绕通知和异常通知。前置通知是在业务执行前自动执行的通知;后置通知是在业务执行后自动执行的通知;环绕通知能力最强,它可以在业务调用前执行通知代码,可以决定是否还调用目标方法;异常通知是业务方法抛出异常时自动执行的方面代码。

2) 讲方面分离出后,就专一的开发业务功能代码。

3) 通过Spring的方式将方面(即通知)织入到业务对象中。

AOP实现原理如图3所示。

3 以项目开发中的数据库登录验证日志管理为例讲解Spring与AOP的实现及运用

1) 数据库登录用户业务关键代码如示例1所示:

示例1:

public class UserBiz {

public User login(User user){

UserDao userDao=new UserDao();

User userg=userDao.login(user);

return userg;

}}

2) 使用前置通知实现方面代码如示例2所示:

示例2:

public class LogAdvice implements MethodBeforeAdvice {

private static DateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒");

public void before(Method m, Object[] args, Object target)

throws Throwable {

//Method m:被通知目标方法对象

//Object[] args:传入被调方法的参数

//Object target:被调方法所属的对象实例

System.out.println("\n[系统日志][" + sdf.format(new Date()) + "]"

+ m.getName()

+ "("+ Arrays.toString(args) + ")"

+" the method belong to "+target.getClass().getName());

}}

3) 使用Spring将方面代码织入业务对象中,关键代码如示例3所示:

示例3:

class="org.Springframework.aop.framework.ProxyFactoryBean">

aop.BookBiz

logAdvice

afterAdvice

aroundAdvice

ExcepAdvice

4 总结

无论是业务方法中,还是调用业务方法的代码中,都看不到日志代码的蛛丝马迹,可运行的时候,确实输出了日志代码(用户登录过)的信息。

通过使用Spring AOP,我们将日志代码分离出去,基本上不需要改动原来的代码,通过简单的配置,业务系统就具备了日志的能力。这样很好的提高了代码的重用性,这也就是Spring AOP备受大家欢迎的原因所在。

参考文献:

[1] 陈天河.struts、hibernate、Spring集成开发宝典[M].北京:电子工业出版社,2007:488.

[2] 徐祥.开发基于Struts+Spring+Hibernate的网上交易系统[M].北京:科学技术文献技术出版社,2008,182.

上一篇:基于网络处理器关键技术的研究与应用 下一篇:高校计算机语言综合实验教学研究