우리는 웹 개발자다. 적어도 springframework 를 사용한다면 Annotation이 뭔지 정확히는 알아야 한다고 생각한다.
왜냐? 내가 어제 면접에서 질문을 받았거덩.! (참고로 금융권 회사인데 물어본다, sm이든 si든 상관없이 알아야 한다고!
물론 난 경력으로 봄 ㅎ)
1. Annotation이란?
Annotation의 역할은 주석이라는 말이지만 JAVA에서는 자바 소스코드에 추가하여 사용할 수 있는 메타데이터의 일종입니다. (메타데이터인건 나도 이번에 다시 알았따..)
- 어노테이션을 통해 어떤 Class인지 Bean 주입하는지, 자동으로 getter, setter 생성하기도 합니다.
즉 특별한 의미를 부여하거나 기능을! 부여하는 등 역할이 있습니다.
- 특징으로는 - 코드량 감소, 생산성 증가(느껴집니다), 유지보수 용이.
근데 난 bean의 역할만 알고있었다. 그냥 자바에서도 해준다는거 알자!
📌어노테이션의 종류
어노테이션에도 종류가 있다.
- 표준(내장) 어노테이션 : 자바가 기본적으로 제공해주는 어노테이션
- 메타 어노테이션 : 어노테이션을 위한 어노테이션
- 사용자정의 어노테이션 : 사용자가 직접 정의하는 어노테이션
@Component
개발자가 생성한 class를 spring의 Bean으로 등록할 때 사용하는 어노테이션.
@Component(value="myman")
public class Man {
public Man() {
System.out.println("hi");
}
}
@ComponentScan
Spring은 @Component, @Service, @Repository, @Controller, @Configuration 중 1개라도 등록된 클래스 찾으면, Context에 bean으로 등록합니다. 이거 중요합니다. bean으로 등록됐다는 것은 따로 클래스에 new를 하지 않더라도 알아서 스프링 IOC 컨테이너가 읽어주는것을 의미합니다.
진짜 편리하다는 말 입니다.
@Bean
개발자가 제어 불가능한 외부 라이브러리와 같은 것들을 bean으로 만들 때 사용합니다.
@Controller
spring에서 해당 class가 Controller의 역할을 한다고 명시하기 위해 사용하는 어노테이션 입니다.
컨트롤러가 된다는 것은 다양한 서비스 요청을 여기서 컨트롤 한다는 말이죠.
외부에서 들어온 입력이든 내부에서의 데이터 처리든 여기서 마무리로 명령을 해줍니다.
@Controller
@RequestMapping("/login")
public class login{
@RequestMapping(method = RequestMethod.GET)
public String getLogin(Model model){
//GET 메소드 / 로그인 요청 처리
}
}
@RequestMapping
@RequestMapping(value=”“)와 같은 형태로 작성하며, 요청 들어온 URI의 요청과 Annotation value 값이 일치하면 해당 클래스나 메소드가 실행됩니다. Controller 객체 안의 메서드와 클래스에 적용 가능하며, 아래와 같이 사용합니다.
- Class 단위에 사용하면 하위 메소드에 모두 적용됩니다.
- 메소드에 적용되면 해당 메소드에서 지정한 방식으로 URI를 처리합니다.
@Controller // 이 Class는 Controller 역할을 합니다
@RequestMapping("/userInfo") // 이 Class는 /userInfo로 들어오는 요청을 모두 처리합니다.
public class UserInfoController {
@RequestMapping(method = RequestMethod.GET)
public String getUserInfo(Model model) {
// GET method, /userInfo 요청을 처리
}
@RequestMapping(method = RequestMethod.POST)
public String addUserInfo(Model model) {
// POST method, /userInfo 요청을 처리
}
}
@Autowired
Spring Framework에서 Bean 객체를 주입받기 위한 방법은 크게 아래의 3가지가 있습니다. Bean을 주입받기 위하여 @Autowired 를 사용합니다. Spring Framework가 Class를 보고 Type에 맞게(Type을 먼저 확인 후, 없으면 Name 확인) Bean을 주입합니다.
- @Autowired
- 생성자 (@AllArgsConstructor 사용)
- setter
@GetMapping
RequestMapping(Method=RequestMethod.GET)과 똑같은 역할을 하며, 아래와 같이 사용합니다.
저는 개인적을 위 메소드.get 방법보다 간단하게 GetMapping을 사용합니다. 보기에도 편하고 사용도 편해서
하지만 이건 회사에서 어떻게 쓰냐에 따라 다르닌까 추후에 소개를 더 해보겠습니다.
@Controller // 이 Class는 Controller 역할을 합니다
@RequestMapping("/info") // 이 Class는 /info로 들어오는 요청을 모두 처리합니다.
public class UserController {
@GetMapping("/")
public String getUser(Model model) {
// GET method, /info 요청을 처리
}
////////////////////////////////////
// 위와 아래 메소드는 동일하게 동작합니다. //
////////////////////////////////////
@RequestMapping(method = RequestMethod.GET)
public String getUser(Model model) {
// GET method, /info 요청을 처리
}
}
@PostMapping
RequestMapping(Method=RequestMethod.POST)과 똑같은 역할을 하며, 아래와 같이 사용합니다.
@Controller // 이 Class는 Controller 역할을 합니다
@RequestMapping("/info") // 이 Class는 /info로 들어오는 요청을 모두 처리합니다.
public class UserController {
@RequestMapping(method = RequestMethod.POST)
public String addUser(Model model) {
// POST method, /info 요청을 처리
}
////////////////////////////////////
// 위와 아래 메소드는 동일하게 동작합니다. //
////////////////////////////////////
@PostMapping('/')
public String addUser(Model model) {
// POST method, /info 요청을 처리
}
}
일단 여기까지 소개를 했습니다.
알면 좋은것을 간단하게 소개 하기 위해서 작성하였으며, 내용 출처는 https://melonicedlatte.com/2021/07/18/182600.html
스프링(Spring)에서 자주 사용하는 Annotation 개념 및 예제 정리 - Easy is Perfect
melonicedlatte.com
이 블로그에서 데리고 왔습니다.
인터뷰를 가실때 이정도는 알고 가시면 양을 좀 줄이고 대답하기 수월하시는데 도움이 되는 용도로 작성하였습니다.
'BE,FE(개발) > Java,Python (server)' 카테고리의 다른 글
| 파이썬에서 SQL 쿼리 관리: .py 파일 vs YAML 파일 (0) | 2024.07.30 |
|---|---|
| Minimal APIs vs. Controllers: 무엇이 더 나을까요? (0) | 2024.07.29 |
| 면접 공부를 하다 DI를 공부하다.(Spring) (0) | 2023.01.14 |
| MVC 패턴 입문 [개발자 면접 준비] for Junior's (0) | 2023.01.08 |
| Lombok을 제대로 eclipse에 적용하는 방법. (0) | 2022.12.31 |