본문 바로가기
└ JAVA

[Spring] 자주 쓰는 스프링(Spring framework) 어노테이션(Annotation) 정리

by 짜장이누나 2019. 8. 2.

 

 

@Autowired

 의존 관계를 자동 설정 할 때 사용하며 타입을 이용하며 의존하는 객체를 주입한다. @Autowired 를 사용하면 new 연산자를 통해 객체를 생성하지 않아도 접근이 가능하다. 따라서 해당 타입의 bean 객체가 존재하지 않거나 두개 이상이면 에러를 발생시킨다. 
 - @Autowired(required=false) 라고 사용하면 해당 타입의 객체가 존재하지 않아도 에러가 발생하지 않는다.
 - 같은 타입의 bean 객체가 두 개 이상 존재 할 때 @Qualifier('Bean 이름') 처럼 bean 이름을 지정해 주면 에러가 발생하지 않는다.

 

@Component

  Autowired 할 클래스 위에 명시한다.

 

@Bean

 리턴값이 컴포넌트가 되도록 한다. 
@Configuration 안에 있어야 bean이 생성된다.

1
2
3
4
5
6
7
8
9
10
@Configuration
public interface BeanInterface {
 
    @Bean
    default SomeBean someBean() {
 
        return new SomeBean();
  }
}
 
cs

 

@Service

 Service 클래스에 쓰인다. 비지니스 로직을 수행하는 클래스라는 의미를 타나낸다.

 

@Controller

 Controller 클래스에 쓰인다.

 

@Resource

 @Autowired 와 쓰임이 비슷하지만 타입이 아닌 이름으로 연결된다는 차이점이 있다.
Ex) @Resource(name="bean 이름")

 

@Value

 프로퍼티에서 값을 가져와 주입한다.

1
2
3
@Value("${system.mail.from}")
private String mailFrom;
 
cs

 

@RestController

 @Controller@ResponseBody 를 합쳐놓은 의미로서 리턴되는 값이 View 로 응답하는 것이 아닌 HttpResponse 로 바로 응답한다.

 

@RequestMapping

 요청받은 URL 을 어떤 메소드가 처리할 지 매핑해주는 역할을 한다.

1
2
3
4
5
6
7
8
9
10
11
12
/**
 * 요청 URL 예시 : https://localhost:8443/admin-web/api/projects
 *
 **/
@RestController
@RequestMapping(value = "/api/projects")
public class ProjectController {
 
    // ... logic area
 
}
 
cs

 

 

@PathVariable

 요청 URL 중 변수값을 파싱한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
 * 요청 URL 예시 : [GET] https://localhost:8443/admin-web/api/projects/1
 *
 **/
@RestController
@RequestMapping(value = "/api/projects")
public class ProjectController {
 
 
    @GetMapping("/{id}")
    public ResponseEntity find(@PathVariable(value = "id") Long id) {
        
        // ... logic here
 
    }
 
}
 
cs

 

@RequestBody

 POST, PUT 등으로 요청 받았을 때, 요청 값으로 넘어오는 body 값 들을 자바 타입으로 파싱한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
 * 요청 URL 예시 : [POST] https://localhost:8443/admin-web/api/projects/1
 *
 **/
@RestController
@RequestMapping(value = "/api/projects")
public class ProjectController {
 
 
    @GetMapping("/{id}")
    public ResponseEntity find(@PathVariable(value = "id") Long id) {
        
        // ... logic here
 
    }
 
    @PostMapping("/{id}")
    public ResponseEntity find(@PathVariable(value = "id") Long id, @RequestBody Module paramModule) {
        
        // ... logic here
    }
 
}
 
cs

 

@RequestParam

 '?paramName=paramValue' 와 같은 쿼리 파라미터를 파싱한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
 * 요청 URL 예시 : [GET] https://localhost:8443/admin-web/api/projects/1?paramNm=test
 *
 **/
@RestController
@RequestMapping(value = "/api/projects")
public class ProjectController {
 
 
    @GetMapping("/{id}")
    public ResponseEntity find(@PathVariable(value = "id") Long id, @RequestParam String paramNm) {
        
        // ... logic here
 
    }
 
}
 
cs

 

 

 


 

계속 추가될 예정 ...

2019/08/01  최초 작성

 

 

[참고] 
https://medium.com/@aaaalpooo/%EB%A7%8E%EC%9D%B4-%EC%93%B0%EB%8A%94-spring-framework-annotation-%EC%A0%95%EB%A6%AC-summary-of-annotations-frequently-used-in-spring-framework-935e1c1a4877

https://backback.tistory.com/115