[SPRING] AOP를 이용하여 어노테이션(annotation) 만들기(활용 / 사용법)

2017. 12. 4. 11:46·FrameWork/Spring
728x90
반응형

Mingty.java

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;


@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Mingty {
    
    public String name() default "";
    public String value() default "";
}

위와 같이 기본 어노테이션 인터페이스를 생성한다.

 

그 후, Controller에 

import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import mingty.util.Mingty;

@Controller
@RequestMapping("/ex")
public class Excontroller {
    
    @Jungle(name="abc", value="/")
    @RequestMapping
    public String abc(HttpSession session){
        session.setAttribute("hi", "good");
        System.out.println("이거다"+session.getAttribute("hey"));
        
        return "error/error";
    }
}

위와 같이 메서드 위에 Jungle이라는 어노테이션이 추가된 것을 확인할 수 있다.

 

아래와 같이 파라미터값을 받거나 세션을 생성 및 요청받을 수 있는 것을 확인할 수 있다.

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class MingtyAOP {
    
    @Autowired HttpServletRequest request;
    @Autowired HttpServletResponse response;
    @Autowired HttpSession session; 
    
    @Around("@annotation(mingty.util.Mingty) && @ annotation(mingty)")
    public Object customAnnoTest(ProceedingJoinPoint joinPoint, Mingty mingty) throws Throwable {
         
        String hi = request.getParameter("hi");
        if(mingty.name().equals("abc")){
            System.out.println("zzzzz");
            System.out.println(">>>>>zz"+session.getAttribute("hi"));
            session.setAttribute("hey", "aaa");
        }
        
        
        System.out.println(">>>>>>"+hi);
        System.out.println("name : " + mingty.name());
        System.out.println("code : " + mingty.value()  );
        Object returnPoint = joinPoint.proceed();
        return returnPoint;
    }
}
 

 

위와 같이 사용할 수 있다.

 

728x90
반응형

'FrameWork > Spring' 카테고리의 다른 글

[spring] taglib 활용  (0) 2018.04.24
[SPRING] HTML5 SOCKET 통신 [sample]  (0) 2017.12.11
[SPRING] 스프링과 마이바티스 에서 다중 데이타소스 사용하기  (0) 2017.10.19
[Spring, JAVA] 파일 복사(FileChannel 이용)  (0) 2017.09.21
[SPRING] FTP서버의 이미지 프리뷰  (0) 2017.08.28
'FrameWork/Spring' 카테고리의 다른 글
  • [spring] taglib 활용
  • [SPRING] HTML5 SOCKET 통신 [sample]
  • [SPRING] 스프링과 마이바티스 에서 다중 데이타소스 사용하기
  • [Spring, JAVA] 파일 복사(FileChannel 이용)
밍글링글링
밍글링글링
mingling - 밍글링, 밍글밍글링. 코드와 어우러지다. IT/ 프로그래밍/소스
    반응형
    250x250
  • 밍글링글링
    mingling
    밍글링글링
  • 전체
    오늘
    어제
    • 밍글링글링 (463)
      • Flutter (2)
      • 일상생활 (8)
        • 리뷰 (1)
        • 생활정보 (4)
        • 맛집 (0)
        • 여행 (0)
        • 모든정보 (3)
      • JAVA (126)
        • 개념 (6)
        • 예제 (115)
        • Exception (2)
      • C (1)
        • C (1)
        • C++ (0)
        • C# (0)
      • JS (29)
        • JavaScript (18)
        • JQuery (5)
        • AJax (0)
        • NODE.JS (6)
        • Angular.JS 2.0 (0)
      • WEB (87)
        • HTML (6)
        • CSS (61)
        • JSP (20)
        • JSTL (0)
      • FrameWork (8)
        • Spring (8)
        • BootStrap (0)
        • MyBATIS (0)
        • JUnit (0)
      • 외부 라이브러리 (5)
      • 공유 소스 관리 (5)
        • Git (5)
        • SVN (0)
      • 빅데이터 프로그래밍 (37)
        • Python (37)
        • R Programming (0)
      • DB (7)
        • ORACLE (0)
        • MySql (6)
      • Development Tools (7)
        • StarUML (0)
        • eXERD (0)
        • Eclipse (4)
      • SKILL (6)
        • Migration (0)
        • Security (6)
      • MicroSoft (0)
        • Excel (0)
        • Word (0)
      • Android (0)
      • Server (21)
        • Ubuntu (5)
        • Linux (15)
      • IOS (0)
      • XML (0)
      • 미디어 (0)
      • 공지사항 (3)
      • NETWORK (1)
      • 게임 (4)
        • 피파 (1)
        • 리니지M (0)
        • 배틀그라운드 (1)
        • 듀랑고 (2)
      • 세상 이슈 (6)
      • 일렉트론 (0)
      • 대회 소식 (4)
      • 업무 (2)
      • Express, Vue (6)
      • docker (11)
      • svelte (3)
      • 블록체인 (1)
      • IT (66)
      • Rust (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    vscode
    gitlab 설치
    자바 생성자
    spring java
    자바 클래스
    css transition
    자바 exception
    svelte
    docker
    브라우저 자동화
    자바 for문
    프런트엔드
    에디터 팁
    Java Array
    ubuntu
    lang rust
    css float
    proxy pass
    ssl 인증서 발급
    nginx ssl 적용
    servlet class
    nginx
    nginx ssl 설정
    rust linux
    vue cli
    AI 반도체
    자바 객체 지향
    React Compiler
    jsp include
    Rust lang
    vue 설치
    SSL 인증서
    러스트
    Extension Bisect
    VS Code 팁
    티스토리 자동화
    css perspective
    mysql db
    css table
    Node
    css tb
    java casting
    jsp parameter
    API 설계
    오류
    제미나이
    클론코딩
    자바 배열
    AI 코딩 에이전트
    리눅스 설치
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
밍글링글링
[SPRING] AOP를 이용하여 어노테이션(annotation) 만들기(활용 / 사용법)
상단으로

티스토리툴바