首页编程java编程java切面是什么意思 谁能解释一下java面向切面编程的思想 以及具体的使用方式

java切面是什么意思 谁能解释一下java面向切面编程的思想 以及具体的使用方式

编程之家2023-10-10113次浏览

今天给各位分享java切面是什么意思的知识,其中也会对谁能解释一下java面向切面编程的思想 以及具体的使用方式进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

java切面是什么意思 谁能解释一下java面向切面编程的思想 以及具体的使用方式

java中Spring是什么意思

java中spring是一个框架。和struts,hibernate组成mvc的三大框架,也就是大家所说的ssh框架。

spring框架可以将组件通过简单的配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合在一个XML文件里。

Spring框架是由于软件开发的复杂性而创建的。

java切面是什么意思 谁能解释一下java面向切面编程的思想 以及具体的使用方式

Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性的角度而言,绝大部分Java应用都可以从Spring中受益。

谁能解释一下java面向切面编程的思想 以及具体的使用方式

面向切面编程(AOP),就是关注程序运行的过程,切面就是要把方法切开,分别执行前,执行中,执行后(可能更细化)等多个步骤,分别针对这三个阶段进行处理。以获得逻辑过程中各部分之间低耦合性的隔离效果。

具体使用场景:

java切面是什么意思 谁能解释一下java面向切面编程的思想 以及具体的使用方式

事务管理:我们在操作数据库的时候需要在操作前打开事务,结束后提交事务(或回滚事务),按往常的编码方式,我们会在每个方法前、后都添加一些事务操作的重复的代码,使得每个类都与事务操作相耦合;而使用了AOP,代码上看上去就是直接操作的数据库,而我们通过某种机制,可让代码在你不察觉的情况下进行了事务开启和提交(或回滚),事实上Spring就提供了这种事务机制。

差不多的场景还有日志的记录

java怎么运用切面编程生成日志

1.首先创建一个自定义注解拦截Controller类,代码如下

/**

*自定义注解拦截Controller

*/

@Target({ ElementType.PARAMETER, ElementType.METHOD})

@Retention(RetentionPolicy.RUNTIME)

@Documented

public@interface ControllerLog{

String desc() default"";//标示默认打印空

}

2.创建一个打印日志的切面类,引入切面注解@Aspect,

新建方法代码如下:

// Controller层切点

@Pointcut("@annotation(org.springframework.web.bind.annotation.RequestMapping)")

public void recordLog(){

}

@Around("recordLog()")

public Object around(ProceedingJoinPoint pjp) throws Throwable{

// ExPatternParser.initLogger();

long start= System.currentTimeMillis();

Object[] args= pjp.getArgs();

String remark= this.getControllerMethodDescription(pjp);

Object retVal= null;

try{

retVal= pjp.proceed();

} catch(Throwable e){

// TODO Auto-generated catch block

logger.error("请求失败"+ e.toString(),e);

remark= remark+"。Exception Cause By"+ e.toString();

throw e;

}finally{

long end= System.currentTimeMillis();

long cost= end- start;

//打印访问日志

// Controller中所有方法的参数,前两个分别为:Request,Response

if(args!= null&& args.length> 0){

Object o= args[0];

if(o instanceof HttpServletRequest){

HttpServletRequest request=(HttpServletRequest) args[0];

PrintLog.visit(request, cost,remark);

}

}

}

return retVal;

}

/**

*获取注解中对方法的描述信息用于Controller层注解

*@param joinPoint切点

*@return方法描述

*@throws Exception

*/

public static String getControllerMethodDescription(ProceedingJoinPoint joinPoint)

throws Exception{

String targetName= joinPoint.getTarget().getClass().getName();

String methodName= joinPoint.getSignature().getName();

Object[] arguments= joinPoint.getArgs();

Class targetClass= Class.forName(targetName);

Method[] methods= targetClass.getMethods();

String description="";

for(Method method: methods){

if(method.getName().equals(methodName)){

Class[] clazzs= method.getParameterTypes();

if(clazzs.length== arguments.length){

ControllerLog controllerLog= method.getAnnotation(ControllerLog.class);

if(controllerLog!=null){

description=

controllerLog.desc();

}

break;

}

}

}

return description;

}

3.然后在每个Controller类上加上注解:

@ControllerLog(desc="要打印的日志内容")

使用java语言,如何对一个类中的静态方法做切面编程

方面(Aspect):一个关注点的模块化,这个关注点实现可能另外横切多个对象。事务管理是J2EE应用中一个很好的横切关注点例子。方面用Spring的Advisor或拦截器实现。

连接点(Joinpoint):程序执行过程中明确的点,如方法的调用或特定的异常被抛出。

通知(Advice):在特定的连接点,AOP框架执行的动作。各种类型的通知包括“around”、“before”和“throws”通知。通知类型将在下面讨论。许多AOP框架包括Spring都是以拦截器做通知模型,维护一个“围绕”连接点的拦截器链。

切入点(Pointcut):指定一个通知将被引发的一系列连接点的集合。AOP框架必须允许开发者指定切入点,例如,使用正则表达式。

引入(Introduction):添加方法或字段到被通知的类。Spring允许引入新的接口到任何被通知的对象。例如,你可以使用一个引入使任何对象实现IsModified接口,来简化缓存。

目标对象(Target Object):包含连接点的对象,也被称作被通知或被代理对象。

AOP代理(AOP Proxy):AOP框架创建的对象,包含通知。在Spring中,AOP代理可以是JDK动态代理或CGLIB代理。

编织(Weaving):组装方面来创建一个被通知对象。这可以在编译时完成(例如使用AspectJ编译器),也可以在运行时完成。Spring和其他纯Java AOP框架一样,在运行时完成织入。

如果你还想了解更多这方面的信息,记得收藏关注本站。

java中的缓存是什么文件(什么是java中的"缓存")京东兑换码(京东兑换码怎么用)