Spring에 JWT를 pom.xml에 추가하고 context.xml에서 설정을 하려고 했습니다.
관련 자료를 찾아보니 Spring boot로 어노테이션 설정 내용이 많았습니다.
xml 설정과 어노테이션 설정을 정리합니다.
어노테이션이란
1. Java 어노테이션
: 빌트 인 어노테이션이라고 합니다.
@Override, @Deprecated, @SuppressWarinings 등이 있습니다.
- @Override : 메소드를 오버라이드 되었는지를 검증하고 부모 클래스나 인터페이스에서 해당 메소드를 찾을 수 없으면 컴파일 오류가 납니다.
- @Deprecated : 메소드를 사용하지 않도록 권고하고 사용 시 컴파일 경고가 납니다.
- @SuppressWarinings : 컴파일에서 경고를 내면 무시하라고 합니다.
- @SafeVarargs : 제너릭 같은 가변인자를 사용 할 때 경고를 무시합니다.(JDK 7이상)
- @FunctionalInterface : 람다 함수 등과 같은 인터페이스를 지정하고 메소드가 없거나 두개 이상이면 컴파일 오류가 납니다. (JDK 8 이상) -> 람다, 함수형 프로그래밍 공부 필요
-> 일급 함수를 지향하기 위해 나왔고 interface에 하나의 메소드를 선언해야 합니다.
2. 매타 어노테이션
: 커스텀 어노테이션을 만들어 낼 수 있습니다.
@Controller, @Service, @ReqeustMapping 등이 있습니다.
- @Retention : 어노테이션이 언제부터 어디까지 영향을 유지할지를 정합니다.
- @Documented : java doc 문서에 표시합니다.
- @Target : 어노테이션을 적용 할 위치를 정합니다.
ElementType.ANNOTATION_TYPE |
어노테이션에 적용 |
ElementType.CONSTRUCTOR |
생성자 선언 시 적용 |
ElementType.FIELD |
enum 상수를 포함한 필드 또는 프로퍼티에 적용 |
ElementType.LOCAL_VARIABLE |
지역 변수 선언 시 적용 |
ElementType.METHOD |
메소드 레벨 선언 시 적용 |
ElementType.PACKAGE |
패키지 선언 시 적용 |
ElementType.PARAMETER | 메소드 파라미터에 적용 |
ElementType.TYPE | 클래스, 인터페이스, enum 등 선언 시 적용 |
- @Inherited : 자식 클래스가 어노테이션을 상속 받을 수 있도록 한다.
RententionPolicy.SOURCE |
소스에서만 사용됨 / 컴파일시 없어짐 |
RententionPolicy.CLASS |
소스, 클래스에서 사용됨 / 컴파일러에 의해 참조 되지만 가상 머신에서 삭제 됨 |
RententionPolicy.RUNTIME |
소스, 클래스, 실행시에 사용됨 / 가상머신에 의 참조 됨 |
- @Repeatable : 반복적으로 두 번 이상 선언 할 수 있게 합니다.(JDK 8 이상)
3. 커스텀 어노테이션
4. Spring 어노테이션
@Bean과 @Component 차이
- @Bean : 개발자가 생성 하지 않은 외부 라이브러리 객체를 사용 할 때/ 반환하는 객체를 빈으로 등록
- @Component : 개발자가 직접 생성한 클래스를 사용 할 때 / 선언 된 객체를 빈으로 등록
기본 Bean 설정
- @Controller : MVC 컨트롤러 임을 명시합니다.
- @Service : 비즈니스 로직을 처리하는데 사용합니다.
- @Repository : DAO, 퍼시스턴스로써 DB를 처리하는데 사용합니다.
- @RestController : @RespnseBody를 기본으로 하는 컨트롤러(@Contoller)임을 선언합니다.
DI(Dependency Injection) 처리
- @Autowired : Spring framework 전용이며 타입에 맞춰서 연결합니다.
- @Inject : 자바(JSR)의 기존 어노테이션으로 타입에 맞춰서 연결합니다.
- @Resource : 자바(JSR)의 기존 어노테이션으로 이름에 맞춰서 연결합니다.
- @Qualifier : 같은 이름의 빈을 지시자를 넣어 특정한 빈 만들어 연결합니다.
JSR : 자바 표준 어노테이션
기타 Bean 설정
- @Required : 설정 상의 프로퍼티를 필수로 설정해야 합니다.
- @Scope : 스프링은 싱글톤이 기본인데 범위를 변경하고 싶을 때 사용합니다.
- @PostConstruct : 스프링에서 객체 생성 후 호출 전 수행으로 사용합니다.
- @PreDesTroy : 스프링에서 객체 제거 전 수행으로 사용합니다.
- @RequestMapping : URL을 매핑 할 수 있습니다.
value(path) : URL을 매핑합니다.
method : 요청 method를 매핑합니다.
params : 요청 파라미터를 매핑합니다.
headers : 특정 헤더 값에 매핑합니다.
- @RequestParam : key, value에 따라 파라미터를 매핑합니다.
- @SessionAttribues : Session정보의 model 값을 유지합니다.
- @RequestBody : request body 정보를 받습니다.
- @ResponseBody : json 형태로 전송할 때 사용합니다.
- @PathVariable : URL의 일부를 파싱합니다.
- @CookieValue : 현재 사용자의 존재하는 쿠키 값 추출
5. Spring 설정
servlet-context.xml
TestBean.java
출력
JavaBean [name=Hello]
com.spring.mvc.beans.JavaBean
name
2. 어노테이션 설정
TestBeans2.java
servlet-context.xml
TestBeans2Run.java
3. 자바 설정
spring 3.x버전에서 한다면 CGLIB를 추가해야합니다.
TesdtBeans3.java
JavaConfigureation.java
TestBeans3.java
'개발(합니다) > Java&Spring' 카테고리의 다른 글
Spring maven project JPA 설정 정리 (0) | 2018.12.17 |
---|---|
Spring maven project Bean, DI, AOP(Aspect) 설정 정리 (0) | 2018.12.17 |
Spring에서 데이터 주고 받기 (0) | 2018.12.13 |
[Spring] UserMapper 사용방법 (0) | 2018.12.12 |
[Spring] tiles3 설정 (0) | 2018.12.12 |