Spring 어노테이션 정리

Yebali·2021년 1월 2일
0

약간의_Spring

목록 보기
6/30

Ctrl + F 권장...

Spring App

@SpringBootApplication

SpringBoot의 기능들을 활성화 시켜주며, 해당 어노테이션을 가진 파일의 위치부터 하위 디렉토리들까지 컴포넌트 스캔이 이루어진다.

@SpringBootApplication
public class HelloSpringApplication {
	public static void main(String[] args) {
		SpringApplication.run(HelloSpringApplication.class, args);
	}
}

@Controller

Controller(웹 요청과 응답을 처리하기 위한) 클래스를 구현하기 위한 어노테이션.
Bean으로 자동 생성, 관리 된다.

@RestController

@Controller에 @ResponseBody가 추가된 것.
Json형태로 객체 데이터를 반환해준다.
API에 사용하면 찰떡.

@Service

Service(내부에서 자바 로직을 처리) 클래스를 구현하기 위한 어노테이션
Bean으로 자동 생성, 관리 된다.

@Repository

DB나 파일I/O같은 외부 작업을 처리하기 위한 클래스
Bean으로 자동 생성, 관리된다.

@Component

개발자가 직접 작성한 Class를 Spring Container에 Bean으로 등록하기 위한 어노테이션.
@Controller, @Service, @Repository는 모두 내부에 @Component 어노테이션을 내장하고있다.
하지만 가시성을 위해서 @Controller, @Service, @Repository를 애용하자...

@ComponentScan

@Autowired

스프링이 관리하는 Bean(Spring Container에 있는 Bean들)을 해당 객체에 매핑해주는 어노테이션.

@Configuration

개발자가 직접 Bean을 등록 할 때 1개 이상의 Bean을 등록 할 경우 해당 클래스에 명시해주어야 하는 어노테이션.

@Bean

개발자가 직접 제어할 수 없는 외부 라이브러리 등을 Spring Container에 Bean으로 등록하기 위한 어노테이션.

@Transaction

@ResponsBody

Controller의 viewResolver대신 HttpMessageConverter가 동작하게 함.
데이터 그 자체를 반환하며, 객체를 반환 할 경우 Json으로 반환함.

@RequestBody

Http 요청의 Body내용을 자바 객체로 매핑해주는 어노테이션
Jackson같은 Message Converter를 사용한다. 주로 Post에서 사용

@PostMapping("/groups")
public void saveGroup(@RequestBody ReqGroupsSaveDto requestDto) {
    long gid = clientService.saveGroup(requestDto, user);
}

@ModelAttribute

클라이언트가 보낸 여러 parameter를 1:1로 자바 객체에 바인딩해주는 어노테이션
@ModelAttribute는 Form 태그를 통해 전달받은 파라미터들을 바인딩 시키는 경우에 사용할 수 있다.
Setter가 필요하다.

@PostMapping("/groups")
public void saveGroup(@ModelAttribute ReqGroupsSaveDto requestDto) {
    long gid = clientService.saveGroup(requestDto, user);
}

@RequestParam

Http 요청의 parameter를 메서드의 parameter로 받을 때 사용.

@GetMapping("hello-string")
public String helloString(@RequestParam("name") String name) {
    return "hello";
}

@ReqeustMapping

Url을 컨트롤러의 메서드와 매핑하는 어노테이션
@GetMapping, @PostMapping, @PutMapping, @DeleteMapping들은 @ReqeustMapping의 method를 지정해준 얘들이다.
@RequestMapping(method = RequestMethod.GET) == @GetMapping

@ReqeustMapping("hello-mvc")
public String helloMVC(@RequestParam String name, Model model) {
    model.addAttribute("data", name);

    return "hello-mvc";
}

@Aspect

AOP 기능을 사용하기 위한 어노테이션.

@Aspect //AOP기능 활성화
@Component
public class TimeTraceAop {
		...
        	...
            	...
}

@Builder

@NoArgsConstructor

@AllArgsConstructor

Test

@SpringBootTest

Spring Container의 Bean들과 함께 테스트를 진행하게 해주는 어노테이션.

@Test

해당 메서드를 단위테스트 메서드로 지정하는 어노테이션.

@Before

각 테스트를 진행할 때, 테스트를 시작 하기전 실행시키는 메서드.

@AfterEach

각 테스트가 끝난 후, 매번 실행시키는 메서드.
테스트를 진행할 때 DB나 자료구조를 비우기 위해 사용하면 좋다.

@AfterEach
public void afterEach() {
    repository.clearStore();
}

@DisplayName

테스트 할 때 사용하면 테스트 이름을 지정 할 수 있다.

@Test
@DisplayName("모든 빈 출력하기")
void findAllBean() {
	...
}
profile
머리에 다 안들어가서 글로 적는 중

0개의 댓글