길민호(ethan.mino)
코딩수첩
길민호(ethan.mino)
전체 방문자
오늘
어제
  • 분류 전체보기 (215)
    • Computer Science (0)
    • Web (6)
      • CSS (0)
      • HTML (0)
    • Node.js (0)
    • Javascript (2)
    • Java (46)
      • Spring (27)
      • Jsp (0)
    • C\C++ (2)
    • Programming (0)
    • AI (0)
    • Database (7)
    • Git (5)
    • Algorithm (119)
      • Stack (0)
      • Queue (0)
      • Linked List (0)
      • Sort (0)
      • Simulation (27)
      • Recursion (0)
      • Backtracking (4)
      • Two Pointer (3)
      • Dynamic Programming (19)
      • Greedy (10)
      • Graph (3)
      • Dijkstra (1)
      • BFS\DFS (8)
      • Floyd (1)
      • MST (4)
      • Tree (4)
      • Binary Search (8)
      • Binary Search Tree (4)
    • IntelliJ (4)
    • Vscode (0)
    • Operating System (0)
    • 후기 (3)
    • 성장일지 (13)
    • 스터디 (7)
    • 설치 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • ㅡ

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
길민호(ethan.mino)

코딩수첩

Java

Java 어노테이션

2020. 6. 29. 01:55
  • @Configuration : 스프링 설정 클래스를 선언하는 어노테이션
  • @Bean : bean을 정의하는 어노테이션 (라이브러리 혹은 내장 클래스 등 개발자가 직접 제어가 불가능한 클래스들을 Bean으로 등록하기 위해 사용)
  • @ComponentScan : @Controller, @Service, @Repository, @Component 어노테이션이 붙은 클래스를 찾아 컨테이너에 등록하는 어노테이션 (basePackages를 지정하면 여러개의 package를 지정할 수 있다.)
  • @Component : Component scan의 대상이 되는 어노테이션 중 하나로써 주로 유틸, 기타 지원 클래스에 붙이는 어노테이션
  • @Autowired : 주입 대상이 되는 bean을 컨테이너에서 찾아 주입하는 어노테이션
  • @RequestMapping : Http 요청과 이를 다루기 위한 Controller의 메소드를 연결하는 어노테이션
    • Http Method와 연결하는 방법
      • @RequestMapping("/users", method = RequestMethod.POST)
      • From Spring 4.3 version
        • @GetMapping
        • @PostMapping
        • @PutMapping
        • @DeleteMapping
        • @PatchMapping
    • Http 특정 헤더와 연결하는 방법
      • @RequestMapping(Method = RequestMethod.GET, headers = "content-type="application/json")
    • Http Parameter와 연결하는 방법
      • @RequestMapping(method = RequestMethod.GET,params = "type=raw")
    • Content-Type Header와 연결하는 방법
      • @RequestMapping(method = RequestMethod.GET, consumes = "application/json")
    • Accept Header와 연결하는 방법
      • @RequestMapping(method = RequestMethod.GET, produces = "application/json")
  • @EnableWebMvc : DispatcherServlet의 RequestMappingHandlerMapping, RequestMappingHandlerAdapter, ExceptionHandlerExceptionResolver, MessageConverter 등 Web에 필요한 빈들을 대부분 자동으로 설정해준다.
    • xml 파일로 설정했다면, <mvc:annotation-driven/> 태그가 해당 역할을 대신한다.
    • 기본 설정 이외의 설정이 필요하다면 WebMvcConfigurerAdapter를 상속받도록 config class를 작성한 후, 필요한 메소드를 오버라이딩 하도록 한다.
  • @EnableTransactionManagement
    • Spring Java Config 파일에서 트랜잭션을 활성화 할 때 사용하는 어노테이션
    • Java Config를 사용하게 되면 PlatformTransactionManager 구현체를 모두 찾아서 그 중에 하나를 매핑해 사용한다.
    • 특정 트랜잭션 매니저를 사용하고자 한다면 TransactionManagementConfigurer를 Java Config 파일에서 구현하고 원하는 트랜잭션 매니저를 리턴하도록 한다.
    • 아니면, 특정 트랜잭션 매니저 객체를 생성시 @Primary 어노테이션을 지정한다.
  • @RestController
    • Spring 4에서 Rest API 또는 Web API를 개발하기 위해 등장한 어노테이션.
    • 이전 버전의 @Controller와 @ResponseBody를 포함한다.
  • @Repository : Dao 객체에는 저장소의 역할을 한다는 의미로, Repository 어노테이션을 사용
  • @EnableTransactionManagement : 트랜잭션을 위한 어노테이션
  • @Import : Import 어노테이션을 사용하면 설정 파일을 나누어서 작성할 수 있다.
  • @Transactional : 스프링에서는 트랜잭션 처리를 지원하는데 그 중 어노테이션 방식으로 @Transactional을 선언하여 사용하는 방법이 일반적이며, 선언적 트랜잭션이라 부른다.
    •  스프링이 제공하는 트랜잭션 템플릿 클래스를 이용하거나 설정 파일, 어노테이션을 이용해서 트랜잭션의 범위 및 규칙을 정의할 수 있다.
    • 클래스, 메서드 위에 @Transacrtional이 추가되면, 이 클래스에 트랜잭션 기능이 적용된 프록시 객체가 생성된다.
    • 이 프록시 객체는 @Transactional이 포함된 메소드가 호출될 경우, PlatformTransactionManager를 이용하여 트랜잭션을 시작하고, 정상 여부에 따라 Commit 또는 Rollback한다.
    • @Transactional 어노테이션은 클래스의 메소드 뿐만 아니라 인터페이스, 클래스 선언에도 사용할 수 있다.
    • 메소드에 선언된 @Transactional의 설정이 가장 우선되기 때문에, 공통적인 규칙은 인터페이스, 클래스 등에 적용하고 특별한 설정은 메소드에 적용할 수 있다.
  • Lombok 어노테이션 (https://www.daleseo.com/lombok-popular-annotations/ 참조)



참조 URL

  • https://goddaehee.tistory.com/167 
  • https://www.hanumoka.net/2018/09/11/spring-20180911-spring-Transactional/
  • https://crosstheline.tistory.com/96

'Java' 카테고리의 다른 글

Jsp (JavaServer Pages)  (0) 2020.07.07
JUnit이란?  (0) 2020.07.01
DataSource란?  (0) 2020.06.28
Connection Pool이란?  (0) 2020.06.28
어노테이션이란?  (0) 2020.06.28
    'Java' 카테고리의 다른 글
    • Jsp (JavaServer Pages)
    • JUnit이란?
    • DataSource란?
    • Connection Pool이란?
    길민호(ethan.mino)
    길민호(ethan.mino)
    💻 호기심 많은 서버 개발자 길민호입니다.

    티스토리툴바