JAVA

[ Java ] - 어노테이션(annonation)

algml0703 2022. 12. 24. 19:14
반응형

 어노테이션 ( = annonation)

@ScopedProxy

//

@PostConstruct

@PostConstruct 어노테이션의 경우 서버가 실행되어, bean이 생성된 후 딱 한 번만 실행된다. bean은 생성된 후 의존성 주입이 이루어지고, 그 뒤에 해당 빈을 초기화하는 작업이 이루어지는데, @PostConstruct는 빈의 의존 관계 주입이 완료된 후 실행되는 초기화 콜백을 적용할 수 있도록 해주는 어노테이션이다. 이 어노테이션이 붙은 메서드의 경우 다른 리소스에서 해당 메서드가 호출되지 않아도, 서버 실행 시 자동으로 수행된다. @PostConstruct 어노테이션은 아래와 같이 사용된다. (@PostConstruct 어노테이션은 빈을 우선 생성 후, 그 뒤에 초기화를 해주는 경우에 사용가능하다. 빈 의존성 주입과 동시에 초기화가 이루어지는 생성자 주입 방식의 경우에는 해당 어노테이션을 사용할 수 없다.)

@PreDestroy

해당 어노테이션이 붙은 메서드는 컨테이너에서 빈이 제거되기 전에 호출되도록 하는 어노테이션으로, 빈이 점유하고 있는 리소스를 해제해줌으로써 자원의 누수를 방지한다.

@Component

스프링 빈을 등록해주는 가장 기본적인 어노테이션이다.

@Service

해당 클래스가 서비스 레이어에 해당함을 알리는 어노테이션이다.

@Repository

해당 클래스가 데이터베이스 접근을 위해 사용되는 클래스임을 알리는 어노테이션으로, 해당 어노테이션을 붙은 경우 트랜잭션 기능을 제공한다.

@Autowired

해당 어노테이션을 준 변수는 값을 할당해주지 않아도 해당 타입으로 준 것을 할당해준 것과 같이 작동한다. heap 메모리 상에서 특정 타입에 대한 변수가 이미 올라가 존재한다면 해당 변수를 이용하게 되고, 올라가 있지 않은 경우에는 null 을 할당하게 된다.

@Getter, Setter 

클래스 위에 사용되며, 해당 함수에 존재하는 필드의 getter함수와 setter함수를 생성하여 준다.

@ToString

클래스 위에 사용하여, toString()메서드를 자동으로 생성하여 주며, exclude로 제외할 필드를 설정할 수 있다.

ex) @ToString(exclud="password") 이와 같이 작성시 password는 제외하고 toString()메서드를 생성하여 준다.

@NoArgsConstructor

클래스 위에 사용하며, 아무런 인자로 받지 않는 기본 생성자 함수를 생성하여 준다. 

@AllArgsConstructor

클래스 위에 사용하여, 해당 클래스에 선언된 모든 필드를 인자로 받는 생성자 함수를 생성하여 준다.

@Data

@Data 어노테이션의 경우 @Getter, @Setter, @ToString, @RequiredArgsConstructor, @EqualsAndHashCode 어노테이션을 모두 사용한 것과 같은 기능을 제공한다.

@RestController

클래스 위에 사용되며, 해당 클래스가 rest api 컨트롤러로 사용될 수 있도록 해준다.

@RequestMapping

클래스 위에 사용되며, 인자로 넣어준 값의 경로로 들어오면 해당 클래스로 연결하여 준다.
ex) @RequestMapping("/board") 이와 같이 작성시 /board 경로로 들어오면 해당 클래스 컨트롤러로 연결하여 준다.

@GetMapping, @PostMapping

컨트롤러 클래스에서 메서드명 위에 사용되며, 해당 (함수)메서드가 어떠한 http 메서드로 연결되는지 설정해주는 것이다. 인자값이 없는 경우 해당 클래스의 기본 경로에 get 또는 post 메서드로 들어올때 해당 (함수)메서드로 연결되며, 인자값을 주어 기본 경로에 추가적인 경로 설정이 가능하다.
ex) 예를 들어 @RequestMapping("/board")로 설정된 클래스의 (함수)메서드에 @GetMapping("/1") 이와 같이 사용되었다면, board/1 경로에 get 메서드로 요청시 해당 함수 메서드가 연결된다.

 


MongoRepository 관련 어노테이션

@EnableMongoAuditing

MongoRepository 사용시 누가, 언제와 같은 생성일 수정일 등의 컬럼을 디비에 자동으로 생성할 수 세팅해주는 어노테이션이다. 프로젝트의 시작점이 main 함수가 실행되는 Application 클래스 위에 사용한다.

@Document

해당 클래스가 데이터베이스와 연동시 사용되는 테이블 entity 클래스임을 알리는 어노테이션이다. 클래스 위에 사용되면, 인자로 해당 테이블명을 넣어준다.
ex)  @Document("Board") / Document("User")

@CreateDate, @LastModifiedDate

데이터베이스에 데이터 생성, 수정 시 생성일 시점과, 수정일 시점의 데이터를 저장하도록 해주는 어노테이션이다. 생성일과 수정일로 사용할 필드명 위에 사용한다.

 

 

컨트롤러 인자 관련 어노테이션

@RequestParam

요청 url의 파라미터에 대한 정보를 얻을 수 있게 해주는 어노테이션이다.

@RequesetHeader

요청 헤더에 대한 정보를 얻을 수 있게 해주는 어노테이션이다.

@SessionAttribute

세션 속성에 대한 정보를 얻을 수 있게 해주는 어노테이션이다.

@RequestAttribute

요청 속성에 대한 정보를 얻을 수 있게 해주는 어노테이션이다.

@PathVariable

요청 경로에 대한 정보를 얻을 수 있게 해주는 어노테이션이다.

 

출처

https://zi-c.tistory.com/entry/JAVA-Lombok-%EC%96%B4%EB%85%B8%ED%85%8C%EC%9D%B4%EC%85%98-Data

책 mastering spring 5 

@PostConstruct :https://ksr930.tistory.com/282

반응형