- Core Annotations
- Web & REST
@Controller: 웹 애플리케이션과 함께 사용하는 Spring MVC 컨트롤러를 나타냄. 주로 View를 반환
@RestController: RESTful 서비스용 개발할 때 주로 사용, @Controller + @ResponseBody의 조합, JSON 형태로 객체 데이터를 반환
@RequestMapping: URL을 요청 받은 후 어떤 method가 처리할지 mapping해주는 에노테이션으로 어떤 요청으로 받을지 정의 후 GET, POST, PUT, DELETE 같은 HTTP method를 지정할 수 있다.
@GetMapping, @PostMapping, @PutMapping, etc.: 특정 HTTP method를 가진 @RequestMapping을 위한 단축어
- Service, Repository & Component
@Service: 비즈니스 로직을 수행하는 Class라는 것을 나타내는 용도
@Repository: DAO 또는 저장소 Class를 주석처리, DataBase에 접근하는 method를 가지고 있는 Class
@Component:
개발자가 직접 작성한 Class를 Bean으로 등록하기 위한 에노테이션, @Service와 @Repository는 @Component의 특수한 형태
- Configuration & Beans
@Configuration: Class가 bean 정의의 원처이라는 것을 나타냄
@Bean: 개발자가 직접 제어가 불가능한 외부 라이브러리등을 Bean으로 만들려할 때 사용
@Profile: @Profile에 인자로 들어가는 값은 프로파일이 현재 인자값과 일치할 시 명시한 스프링 빈을 등록하라
- Dependency Injection
@Autowired: field, setter method, constructor(권장방식)에 사용하며 Type에 따라 알아서 Bean을 주입
@Qualifier: @Autowired와 같이 쓰이며, 같은 타입의 Bean 객체가 있을 때 해당 아이디를 적어 원하는 Bean이 주입될 수 있도록 하는 Annotation
@Value: properties에서 값을 가져와 주입할 때 사용
- Data & Persistence
@Entity: 영속성 엔터티를 나타내는 JPA 에노테이션
@Table: 엔터티가 매핑되어야 할 테이블을 지정하는 데 사용
@Id, @GeneratedValue: 기본 키 및 생성 전략을 위한 JPA 에노테이션
@Column: 영속 속성이나 필드에 대한 매핑된 열을 지정하는 데 사용
- Aspects & Transaction
@Aspect: 관점 지향 프로그래밍(AOP)에서 관점을 정의하는 데 사용
@Transactional: 메서드나 클래스에 트랜잭션 동작이 있어야 함을 나타냄
- Event Handling
- Testing
@SpringBootTest: Spring Boot와 함께 사용되는 통합 테스트용, 애플리케이션 컨텍스트를 자동 구성할 수 있다.
@TestConfiguration: 테스트에 추가 구성을 제공하는 클래스임을 나타내기 위해 Spring Boot 테스트 기능과 함께 사용
@MockBean: 테스트 중 애플리케이션 컨텍스트에 모의 객체를 추가하는 데 사용
방법1
@Controller
@ResponseBody
public class SjinchoApplication {
@GetMapping(path = "/test")
public String Test1(){
return "Test";
}
}
방법2
@RestController
public class SjinchoApplication {
@GetMapping("/test")
public String Test1(){
return "Test";
}
}
방법3
@RestController
public class SjinchoApplication {
@RequestMapping(value = "/test", method=RequestMethod.GET)
public String Test1(){
return "Test";
}
}