1: класс журнала сущности
Общественный класс Syslog { / *** / Private Integer ID; / ** Описание журнала*/ Приватная строка Описание; / ** Метод выполнения*/ метод частной строки; /** Тип журнала 0: журнал работы; 1: журнал исключений*/ private Integer logtype; / ** IP -адрес, запрашиваемый клиентом*/ private String Requestip; / ** Код исключения*/ private String ExceptionCode; / ** Детали исключения*/ private String ExceptionDetail; / ** Параметры запроса*/ private String Params; / ** Оператор*/ частная строка CreateBy; / ** Время работы*/ частная строка создать; public integer getId () {return id; } public void setId (Integer id) {this.id = id; } public String getDescription () {return description; } public void setDescription (строка описание) {this.description = description; } public String getMethod () {return Method; } public void setMethod (String Method) {this.method = method; } public integer getLogtype () {return logtype; } public void setLogtype (integer logtype) {this.logtype = logtype; } public String getRequestip () {return requestip; } public void setRequestip (string requestip) {this.requestip = requestip; } public String getExceptionCode () {return ExceptionCode; } public void setExceptionCode (String ExceptionCode) {this.exceptionCode = ExceptionCode; } public String getExceptionDetail () {return ExceptionDetail; } public void setExceptionDetail (string exceptionDetail) {this.exceptionDetail = ExceptionDetail; } public String getParams () {return params; } public void setParams (String params) {this.params = params; } public String getCreateby () {return createBy; } public void setCreateby (String createBy) {this.createby = createBy; } public String getCreatedAte () {return CantureTate; } public void setCreatedate (строка создан) {this.createdate = censueTate; }}2: банка, требуемая Maven
<depervice> <groupid> org.aspectj </GroupId> <ArtifactId> AspectJrt </artifactId> <sersion> 1.7.4 </version> </vehyse> <dehyederiny> <groupid> org.aspectj </GroupId> <strifactid> AspectJweaver </artifactid> <persion> 1.7.4 </версия> </researnity> </reperty> </reperty> </reperty> </reperty> </reperty> </reperty> </reperty> </artifactid> <seriate> 1.7.4. <groupId> cglib </GroupId> <ArtifactId> cglib </artifactid> <sersive> 2.1_3 </version> </depervice> <dependency> <groupid> org.springframework </GroupId> <artifactid> Spring-aop </artifactid> <serse> 4.5.
Проект обязан использовать JDK1.7
3: Springservlet-Mvc.xml
<!-Proxy-Target-class = "true" заставляет использовать прокси-сервер Cglib. Если false, Spring автоматически выберет-> <AOP: AspectJ-autopproxy Proxy-Target-class = "true"/>
Добавление Proxy-Target-class = "true"-это перехват методов в контроллере.
4: Определите раздел, я в основном пишу предварительные уведомления и исключения здесь
Ниже приведена пользовательская аннотация
Импорт java.lang.annotation.*; @target ({elementtype.parameter, elementtype.method}) @retention (armentpolicy.runtime) @documented public @Interface log {/ ** Тип выполнения операции, такой как: добавить операцию **/ public raytype () Default ""; / ** Специальная операция, которая должна быть выполнена, например: добавить пользователь **/ public String OperationName () по умолчанию ";}Срезать лицо
Импорт java.lang.reflect.method; import java.text.simpledateformat; импорт java.util.arrays; import java.util.date; импорт javax.annotation.resource; импорт javax.servlet.http.httpserveltrequest; импорт. org.aspectj.lang.joinpoint; import org.aspectj.lang.proudeingjoinpoint; импорт org.aspectj.lang.annotation.fter; импорт org.aspectj.lang.annotation.afterreturning; импорт. org.aspectj.lang.annotation.aspept; import org.aspectj.lang.annotation.before; import org.aspectj.lang.annotation.pointcut; импорт org.slf4j.logger; импорт org.slf4j.loggerfactor org.springframework.web.context.request.requestcontextholder; import org.springframework.web.context.request.servletrequestattributes; импорт com.gtcity.user.model.syslog; import com.gtcity.model.sysuser; com.gtcity.user.service.syslogservice;/** * @author panliang * @version Время создания: 2017-3-31 * @dest point-cut class * */ @asment @componentpublic class systemlogaspepe {// внедрить услугу для сохранения журналов в DataBase @Resource Private Syslogserv {// Save To Save to the DataBase @Resource Private Syslogserviser Systemvice; Private Static Final Logger logger = loggerFactory.getLogger (SystemLogaspect. Class); // TANGENT CONTROLLER LAYEN TANGENT // Первая * представляет все типы возвращаемых значений // Второй * представляет все классы // Третий * представляет все методы класса // Последний ... представляет все параметры. @Pointcut ("execution ( * com.gtcity.web.controller .. *. * (..))") public void controlleraspect () {} /** * * @author: panliang * @time: 2017-3-31 2:22:16 PM * @param invoint point-cut @description. Операции*/ @before ("controlleraspect ()") public void dobefore (joinpoint joinpoint) {/* System.out.println ("============================================================================================================================ Httpservlectrequest requent = ((servletrequestattributes) request kondtextholder.getrequestatributes ()). GetRequest (); user.setusername («Нерегистрированный пользователь»); Class.forname (TargetName); Method.getannotation (log.class) .operationType (); Start =============); System.out.println ("Запрос:" + user.getusername ()); log.setmethod ((joinpoint.getTarget (). getClass (). getName () + "." + log.setparams (null); System.out.println ("======= Controller 2017-3-31 2:24:36 * @param joinpoint point-cut * @description: уведомление об исключении используется для перехвата и записи журнала исключений */ @afterthrowing (pointcut = "controlleraspept ()", throwing = "e") public void doafterthrowing (joinpointpoint, throwable e). QUERSECONTEXTERELER. ip = requent.getRemoteaddr (); joinpoint.getSignature (). GetName (); Clazzs = Method.getParametertypes (); output =======*/ system.out.println ("================= Уведомление об исключении Start ======================================================================================= ========================================================================================== ========================================================================================== ========================================================================================== System.out.println ("Информация об исключении:" + e.getmessage ()); OperationName); log.setDescription (anportageName); ")"); System.out.println ("========= Уведомление об исключении END =========================================================================================================================================== log =========== logger.error ("Метод исключения: {} код исключения: {} Информация об исключении: {} Параметры: {}", joinpoint.getTarget (). getClass (). getName () + joinpoint.getSignature (). }5: в контроллере
/** * Найдите пароль на основе имени пользователя, чтобы определить, являются ли имя пользователя и пароль правильными * @author panliang * @param requare * @param response * @throhs ioexception */ @requestmapping ("/skippage.do") @log (anpormation sturepe = "Select Operation:", OperationName = "login")// skippage (httpservletrequest -запрос, ответ httpservletresponse) throws ioexception {modelandview result = null; string username = request.getParameter ("email"); String password = request.getParamet ModelAndView ("redirect: /login/dispacher_main.do");} else if (flag == 2) {// Имя пользователя не существует result = new ModelAndView ("redirect: /login/login.do? Errorcode = 1");} else {// passw ModelandView ("redirect: /login/login.do? Errorcode = 2");} return Result;}Для тех, кто хочет знать о трех других уведомлениях, пожалуйста, обратитесь к этому сообщению в блоге: Нажмите, чтобы открыть ссылку
Таким образом, когда пользователь обращается к фону, будут записи, будь то обычный доступ или база данных ошибок.
Приведенный выше метод аннотации AOP для реализации глобального управления журналами - это весь контент, который я поделился с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.