반응형

package com.myboard.aop;


import java.sql.Date;


import org.aspectj.lang.ProceedingJoinPoint;

import org.aspectj.lang.annotation.Around;

import org.aspectj.lang.annotation.Aspect;

import org.aspectj.lang.annotation.Pointcut;

import org.springframework.context.annotation.EnableAspectJAutoProxy;

import org.springframework.stereotype.Component;

import org.springframework.util.StopWatch;


@Aspect

@Component

public class AroundExample {

public AroundExample() {

System.out.println("/////////////////Asepect생성/////////Asepect생성////////////Asepect생성////////Asepect생성");

}

@Pointcut("execution(* com.myboard.web.controller.BoardController.postInsert(..))")  

public void insertBoard(){}//pointcut name  

      

    @Around("insertBoard()")//applying pointcut on before advice  

    public Object myadvice(ProceedingJoinPoint pjp) throws Throwable   

    {  

        StopWatch watch = new StopWatch();

        watch.start();

        Object obj=pjp.proceed();  

        watch.stop();

        Double elapsedTimeBySecond = watch.getTotalTimeSeconds();

        System.out.println("──────────────────────────insertBoard 메소드 소요시간 = "+elapsedTimeBySecond+"초───────────────────────────");

        return obj;  

    }  


}



위와같은 Aspect를 만들고 insert 쿼리 메소드중 하나에 Around Advice를 통해 시간체크를 하려고 했다

그러나 콘솔창에 로그가 찍히지 않았다

분명 Bean으로 올라가긴 갔는데,,,
("/////////////////Asepect생성/////////Asepect생성////////////Asepect생성////////Asepect생성" 
이로그는 뜸)
 



해결

알고보니 @EnableAspectJAutoProxy 을 달아줘야 되는것이었다




수정된 코드



@EnableAspectJAutoProxy //←이 부분

@Aspect

@Component

public class AroundExample {

public AroundExample() {

System.out.println("/////////////////Asepect생성/////////Asepect생성////////////Asepect생성////////Asepect생성");

}

@Pointcut("execution(* com.myboard.web.controller.BoardController.postInsert(..))")  

public void insertBoard(){}//pointcut name  

      

    @Around("insertBoard()")//applying pointcut on before advice  

    public Object myadvice(ProceedingJoinPoint pjp) throws Throwable   

    {  

        StopWatch watch = new StopWatch();

        watch.start();

        Object obj=pjp.proceed();  

        watch.stop();

        Double elapsedTimeBySecond = watch.getTotalTimeSeconds();

        System.out.println("──────────────────────────insertBoard 메소드 소요시간 = "+elapsedTimeBySecond+"초───────────────────────────");

        return obj;  

    }  


}





정상 실행 화면


반응형
반응형

로그

빌드시 아래와 같이 Server startup 로그만 나오고 

index.jsp 를 실행해도 

404 에러만 뜸

그러나 어떠한 에러로그도 뜨지않고 위처럼 Server startup 로그만 뜸




해결

1.STS종료


2.

.m2/repository/ 안에 모든 폴더 완전삭제


3.STS실행뒤 STS가 .m2/repository/를 다시 초기화 하기 위해서 5분정도 시간이 소요됨 얌전히 기다림


그뒤 프로젝트들 전부다 느낌표 뜰텐데, 프로젝트 아무거나 하나 maven update 해줌


4.느낌표 사라지고 서버 clean 해주고 다시 해당 프로젝트 빌드,

로그가 정상적으로 뜨면서 정상실행됨




정상 실행 화면










반응형
반응형

javax.servlet을 import못함



프로젝트를 집에서 작업하기 위해 git clone으로 받아서 보니 위와 같은 오류가 발생함

javax.servlet 클래스를 import 하지 못해서 build 자체가 안됨



정상 프로젝트 파일과 비교해보니 오류파일에는 Apache Tomcat v8.0 이 

빌드 Libraries에는 없는걸 알게됨







원인


     

프로젝트/Build Path/Configure Build Path 확인


Apache Tomcat v7.0 으로 설정되있는 걸 볼 수 있음(잘못된설정)

본래 프로젝트는 v8.0 버전으로 빌드했던 프로젝트임


아마 자동으로 빌드 설정이 되면서

기본값이 Apache Tomcat v7.0으로 설정되 있어서

위와같은 오류가 발생한듯







해결방안

 

1.Server Library[Apache Tomcat v7.0](unbound) 자체를 remove 해줌


2.Apply 누르기


3.Project Facets 으로감




4.우측에 Runtimes 탭으로 가면

Apache Tomcat v7.0 에 체크되있는걸

v8.0 으로 체크 바꾸기


 Apply 누르고 종료하면 정상적으로 동작하게 된다





반응형

+ Recent posts