成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

java代碼中的切面,java切面是什么意思

java的切面能修改參數(shù)嗎

java的切面能修改參數(shù)。方法:

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比盱眙網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式盱眙網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋盱眙地區(qū)。費用合理售后完善,十年實體公司更值得信賴。

1、用切面的方式,在切面對controller進行攔截。

2、過濾器,自定義一個過濾器,自定義wrapper實現(xiàn)HttpServletRequestWrapper

java切點和切面講解,主要是干什么的,有什么作用,省代碼?高效?務(wù)必通俗易懂,跪謝

切點和通知構(gòu)成切面;比如現(xiàn)在你想在所有的save方法前加一些相同代碼,那你的切點就是save前,然后通知就是你所加的代碼,而這兩個整體構(gòu)成一個切面,當你那天突然覺得這段代碼需要改一下,那你就可以直接改通知內(nèi)容,結(jié)果是開發(fā)效率變高,代碼量減少,耦合度降低,你可以參考聲明式事務(wù)的配置方式來梳理這部分知識,會快一點

java怎么運用切面編程生成日志

1.首先創(chuàng)建一個自定義注解攔截Controller類,代碼如下

/**

* 自定義注解 攔截Controller

*/

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

@Retention(RetentionPolicy.RUNTIME)

@Documented

public @interface ControllerLog {

String desc() default "";//標示默認打印空

}

2.創(chuàng)建一個打印日志的切面類,引入切面注解@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中所有方法的參數(shù),前兩個分別為: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 = "要 打印的日志內(nèi)容")

java中的靜態(tài)方法能否進行切面編程?

aop的事務(wù)代理機制最重要的放心是確定切入點,面,通知.具體看代碼,下面是在spring中配置的我自己寫的一個異常處理的aop作用類 ,該配置切入面在于在controller包下的所有類的所有注解為aspect的切面類,通知類型為表示在目標方法之前切入,切入點為controller包下的所有類所有方法.至于樓主所說的靜態(tài)方法對于事務(wù)機制應(yīng)該沒什么區(qū)別吧,只要用within方法一樣可以的

!-- 定義共同處理組件 --

bean id="loggerBean"

class="org.tedu.cloudnote.aspect.LoggerBean"

/bean

!-- 將loggerBean組件切入到Controller方法上 --

aop:config

!-- 要切入哪個共同處理組件,ref指定共同組件id值 --

aop:aspect ref="loggerBean"

!-- aop:before表示在目標方法之前切入,

method指定方法名;pointcut指定目標組件 --

aop:before method="logController"

pointcut="within(org.tedu.cloudnote.controller..*)"/

/aop:aspect

Java配置切面的幾種方式你都知道嗎

演示5種方式配置文件AOP

1. bean class="cn.hncu.spring4x.aop.Cat" id="cat"/bean

!-- 切點 --

bean class="org.springframework.aop.support.JdkRegexpMethodPointcut" id="pointcut"

property name="pattern" value=".*run.*"/property

/bean

!-- 通知 ,要自己寫--

bean class="cn.hncu.spring4x.aop.AroundAdvice" id="advice"/bean

!-- 切面=切點+通知 --

bean class="org.springframework.aop.support.DefaultPointcutAdvisor" id="advisor"

property name="advice" ref="advice"/property

property name="pointcut" ref="pointcut"/property

/bean

bean class="org.springframework.aop.framework.ProxyFactoryBean" id="catProxide"

property name="target" ref="cat"/property

property name="interceptorNames"

list

valueadvisor/value

/list

/property

/bean

2. bean class="cn.hncu.spring4x.aop.Cat" id="cat"/bean

!-- 切面=切點+通知 (把切點和通知寫成內(nèi)部bean)--

bean class="org.springframework.aop.support.DefaultPointcutAdvisor" id="advisor"

property name="advice"

bean class="cn.hncu.spring4x.aop.AroundAdvice"/bean

/property

property name="pointcut"

bean class="org.springframework.aop.support.JdkRegexpMethodPointcut"

property name="patterns"

list

value.*run.*/value

value.*say.*/value

/list

/property

/bean

/property

/bean

bean class="org.springframework.aop.framework.ProxyFactoryBean" id="catProxide"

property name="target" ref="cat"/property

property name="interceptorNames"

list

valueadvisor/value

/list

/property

/bean

3.bean class="cn.hncu.spring4x.aop.Cat" id="cat"/bean

!--//直接在切面bean中配置“切點的正則表達式”,省去“切點bean”的配置 用到這個類 org.springframework.aop.support.RegexpMethodPointcutAdvisor --

bean class="org.springframework.aop.support.RegexpMethodPointcutAdvisor" id="advisor"

property name="advice"

bean class="cn.hncu.spring4x.aop.AroundAdvice"/bean

/property

property name="patterns"

list

value.*run.*/value

/list

/property

/bean

bean class="org.springframework.aop.framework.ProxyFactoryBean" id="catProxide"

property name="target" ref="cat"/property

property name="interceptorNames"

list

valueadvisor/value

/list

/property

/bean

4. bean class="cn.hncu.spring4x.aop.Cat" id="cat"/bean

!--//直接在切面bean中配置“切點的正則表達式”,省去“切點bean”的配置 用到這個類 org.springframework.aop.support.RegexpMethodPointcutAdvisor --

bean class="org.springframework.aop.support.RegexpMethodPointcutAdvisor" id="advisor"

property name="advice"

bean class="cn.hncu.spring4x.aop.AroundAdvice"/bean

/property

property name="patterns"

list

value.*run.*/value

/list

/property

/bean

!-- 自動代理 --

bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/bean

5. bean class="cn.hncu.spring4x.aop.Cat" id="cat"/bean

!--//直接在切面bean中配置“切點的正則表達式”,省去“切點bean”的配置 用到這個類 org.springframework.aop.support.RegexpMethodPointcutAdvisor --

bean class="org.springframework.aop.support.RegexpMethodPointcutAdvisor" id="advisor"

property name="advice"

bean class="cn.hncu.spring4x.aop.AroundAdvice"/bean

/property

property name="patterns"

list

value.*run.*/value

/list

/property

/bean

!-- 自動代理 --

bean class="cn.hncu.spring4x.aop.MyAutoProxy"/bean

當前題目:java代碼中的切面,java切面是什么意思
URL分享:http://jinyejixie.com/article24/hojsce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、品牌網(wǎng)站設(shè)計、網(wǎng)站內(nèi)鏈、網(wǎng)站收錄、網(wǎng)站設(shè)計公司、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
扎鲁特旗| 望江县| 山东| 平潭县| 德令哈市| 贺州市| 保靖县| 贵溪市| 黔西县| 嵊州市| 南陵县| 澜沧| 崇左市| 荥阳市| 华容县| 汶上县| 永宁县| 太康县| 闻喜县| 阿坝县| 霸州市| 高台县| 顺平县| 福鼎市| 通城县| 云龙县| 桑日县| 波密县| 墨竹工卡县| 英德市| 甘孜县| 黄梅县| 荥经县| 罗田县| 抚远县| 将乐县| 邵武市| 方山县| 渭南市| 山东省| 五峰|