Ctrl + F 권장...
SpringBoot의 기능들을 활성화 시켜주며, 해당 어노테이션을 가진 파일의 위치부터 하위 디렉토리들까지 컴포넌트 스캔이 이루어진다.
@SpringBootApplication
public class HelloSpringApplication {
public static void main(String[] args) {
SpringApplication.run(HelloSpringApplication.class, args);
}
}
Controller(웹 요청과 응답을 처리하기 위한) 클래스를 구현하기 위한 어노테이션.
Bean으로 자동 생성, 관리 된다.
@Controller에 @ResponseBody가 추가된 것.
Json형태로 객체 데이터를 반환해준다.
API에 사용하면 찰떡.
Service(내부에서 자바 로직을 처리) 클래스를 구현하기 위한 어노테이션
Bean으로 자동 생성, 관리 된다.
DB나 파일I/O같은 외부 작업을 처리하기 위한 클래스
Bean으로 자동 생성, 관리된다.
개발자가 직접 작성한 Class를 Spring Container에 Bean으로 등록하기 위한 어노테이션.
@Controller, @Service, @Repository는 모두 내부에 @Component 어노테이션을 내장하고있다.
하지만 가시성을 위해서 @Controller, @Service, @Repository를 애용하자...
스프링이 관리하는 Bean(Spring Container에 있는 Bean들)을 해당 객체에 매핑해주는 어노테이션.
개발자가 직접 Bean을 등록 할 때 1개 이상의 Bean을 등록 할 경우 해당 클래스에 명시해주어야 하는 어노테이션.
개발자가 직접 제어할 수 없는 외부 라이브러리 등을 Spring Container에 Bean으로 등록하기 위한 어노테이션.
Controller의 viewResolver대신 HttpMessageConverter가 동작하게 함.
데이터 그 자체를 반환하며, 객체를 반환 할 경우 Json으로 반환함.
Http 요청의 Body내용을 자바 객체로 매핑해주는 어노테이션
Jackson같은 Message Converter를 사용한다. 주로 Post에서 사용
@PostMapping("/groups")
public void saveGroup(@RequestBody ReqGroupsSaveDto requestDto) {
long gid = clientService.saveGroup(requestDto, user);
}
클라이언트가 보낸 여러 parameter를 1:1로 자바 객체에 바인딩해주는 어노테이션
@ModelAttribute는 Form 태그를 통해 전달받은 파라미터들을 바인딩 시키는 경우에 사용할 수 있다.
Setter가 필요하다.
@PostMapping("/groups")
public void saveGroup(@ModelAttribute ReqGroupsSaveDto requestDto) {
long gid = clientService.saveGroup(requestDto, user);
}
Http 요청의 parameter를 메서드의 parameter로 받을 때 사용.
@GetMapping("hello-string")
public String helloString(@RequestParam("name") String name) {
return "hello";
}
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";
}
AOP 기능을 사용하기 위한 어노테이션.
@Aspect //AOP기능 활성화
@Component
public class TimeTraceAop {
...
...
...
}
Spring Container의 Bean들과 함께 테스트를 진행하게 해주는 어노테이션.
해당 메서드를 단위테스트 메서드로 지정하는 어노테이션.
각 테스트를 진행할 때, 테스트를 시작 하기전 실행시키는 메서드.
각 테스트가 끝난 후, 매번 실행시키는 메서드.
테스트를 진행할 때 DB나 자료구조를 비우기 위해 사용하면 좋다.
@AfterEach
public void afterEach() {
repository.clearStore();
}
테스트 할 때 사용하면 테스트 이름을 지정 할 수 있다.
@Test
@DisplayName("모든 빈 출력하기")
void findAllBean() {
...
}