2022. 7. 14. 17:27ㆍ개발공부 기강잡자/Java&Spring
아직 스프링 입문 단계이지만, 스프링을 모를 때도, 안드로이드를 할 때도 종종 들은 단어 Annotation
그동안 "ㅇㅇ 들어봤지ㅋ" 하고 넘긴 것들은 "아; 정확하게 알았더라면 그동안 편했을텐데😂" 하는 후회로 늘 돌아왔기 때문에 이번에 확실히 짚고 넘어가려고 한다.
Annotation이란?
구글에 검색해봤더니 단어를 해석해줬다.
하지만 내가 알기로는 // 로 쓰는 그런 용도의 주석이 아니란 말이야..!
Annotation은 Java5 부터 등장한 기술이다.
Annotation을 소스코드에 작성하면 비즈니스 로직에 영향을 주는 것은 아니지만, 어노테이션이 붙은 소스코드에 메타데이터를 삽입하여 특별한 의미, 기능을 수행하도록하며 체계적인 소스코드를 구성하는데 도움을 준다.
용도
Annotations are means of attaching metadata to code. = Annotation은 코드에 메타데이터를 부여하여
- 컴파일러가 코드 작성 문법 에러를 체크하도록 정보를 제공
- 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보 제공
- 런타임 시 특정 기능을 실행하도록 정보를 제공한다.
효율적인 사용은 계속 코딩하면서 익혀야할 것 같다.
사용방법
@Annotation
을 코드 앞에 붙이면 된다.
+ Annotation을 Custom 해서 사용할 수 있다고 한다. 나중에 실습 끝나면 해보기.
Controller
@Controller
: 해당 클래스가 Controller가 됨
@RequestMapping("/index")
: 요청된 URL과의 매핑을 담당, ~~~/index URL 요청이 발생하면 해당 annotation이 붙어있는 메소드를 찾아 실행
@ResponseBody
: URL 요청에 대한 응답으로 문자열 리턴하기 위한 애너테이션
@RequiredArgsConstructor
: 생성자 생성
@RequestMapping("/question/detail/{id}")
라는 URL 매핑이 있을 때,
@PathVariable("id")
: URL에서 매개변수를 받을 때 함수로 받아오기 위한 애너테이션, @RequestMapping
에서 사용한 변수명과 동일해야한다!
@PostMapping
: @RequestMapping
과 동일하지만 POST 요청일 경우에만 받아들임
> @GetMapping
과 같은 메소드명으로 정의할 수 있음 (매개변수 형식은 달라야한다)
@GetMapping
: @RequestMapping
과 동일하지만 GET 요청일 경우에만 받아들임
@RequestParam
: Request 파라미터의 값을 받아옴 (Request로 받는 매개변수 앞에 작성)
Entity
@Entity
: 해당 클래스가 Entity가 됨
@Getter & @Setter
: 각 컬럼에 대한 getter setter 메소드를 자동으로 생성하기 위한 롬복의 애너테이션
@Id
: 고유번호(기본키)로 지정하는 애너테이션 - 중복을 허용하지 않음
@GeneratedValue
: 데이터를 저장할 때, 자동으로 값이 1씩 증가@GeneratedValue(strategy = GenerationType.IDENTITY)
- 속성 strategy : 고유번호를 생성하는 옵션 | IDENTITY : 일정한 순서의 고유번호 생성
@Column
: 컬럼의 세부 설정을 위해 사용
- 속성 length (길이), columnDefinition (컬럼의 속성)
* Entity의 속성은 @Column
애너테이션을 적용하지 않아도 자동으로 테이블 컬럼으로 인식됨, 테이블 컬럼으로 인식하고 싶지 않은 경우 @Transient
애너테이션 사용
@ManyToOne
@ManyToMany
@ManyToAny
@OneToOne
@OneToMany
: Entity간의 관계를 명시하는 애너테이션이다.
Service
@Service
: 서비스 클래스임을 명시
JUnit
@Test
: 테스트 함수임을 명시
@Transactional
: 테스트 시에 DB 세션이 끊기는 것을 방지하기 위한 애너테이션
Form
@Valid
: Form 클래스의 validation을 동작하도록 함 (-> BindingResult
= 검증이 수행된 결과를 의미하는 객체)
앞으로 Spring 공부를 하면서 Annotation을 활용해보고 직접 정의도 해봐야겠다.
'개발공부 기강잡자 > Java&Spring' 카테고리의 다른 글
[Spring Boot] @Transactional Annotation 관련 (0) | 2022.07.19 |
---|---|
[Spring Boot] 2022.07.07 ~ 2022.07.15 점프 투 스프링 실습 회고 (0) | 2022.07.19 |
[Spring/JPA] H2 Database 설정 - Windows 홈디렉터리에 파일 생성하기 | h2-console 접속 오류 (0) | 2022.07.11 |
[Spring] Spring Boot 전체 구조 (0) | 2022.07.11 |
[STS] 롬복(Lombok) 설치 (0) | 2022.07.08 |