티스토리 뷰
- 주석이라는 사전적의미가 있으며 컴파일 혹은 런타임에 해석된다
- 메타데이터(실제데이터가 아닌 Data를 위한 데이터) 라고도 불리고 JDK5부터 등장
용도
- @Override 어노테이션처럼 컴파일러를 위한 정보를 제공하기 위한 용도
- 스프링 프레임워크의 @Controller 어노테이션처럼 런타임에 리플렉션을 이용해서 특수 기능을 추가하기 위한 용도
- 컴파일 과정에 어노테이션 정보로부터 코드를 생성하기 위한 용도
자바 리플렉션: 다른언어에는 존재하지 않는 특별한 기능, 컴파일 시간이 아닌 실행시간에 동적으로 특정 클래스의 정보를 객체를 통해 분석 및 추출해내는 프로그래밍 기법
개인적으로 사용해본 스프링 부트에서의 Annotations (더 많은걸 알고싶으면 다음의 글을 추천한다. 이동)
Configtations
@EnableWebSecurity (출처: 이동)
- Spring Security에서 사용하는 어노테이션 웹 보안을 활성화한다.
@EnableWebMvc (출처: 이동)
- 내부적으로 WebMvcConfigurationSupport클래스를 환경설정 클래스로 등록해 Spring MVC를 구성
Controller
@RestController
- @Controller와 @ResponseBody 의 기능을 합쳐놓은 어노테이션으로써 모든 요청 메소드에 @ResponseBody를 추가해야할 필요가 없어졌다.
@Autowired
- 빈간의 의존성하는 객체를 자동으로 삽입해주며 생성자, 필드, 메서드 세 곳에 적용이 가능하다.
@RequestMapping(path="/{sq}", method=RequestMethod.POST)
- 요청 메소드에 작성하는 핸들러 매핑 어노테이션이다
@PostMapping (path="/{sq}")
@GetMapping (path="/{sq}")
@PutMapping (path="/{sq}")
@DeleteMapping (path="/{sq}")
- RequestMapping의 메소드들을 분류한 어노테이션들이다
Jpa entity (Persistence 관련)
1) class
@Entity
@EntityListeners(value= { BookListener.class }) (출처: 이동)
- 엔티티를 DB에 적용하기 이전&이후 커스텀 콜백을 요청할 수 있는 어노테이션
@Table(name="info_book_tbl")
2) entity
@Id
- 일반적으로 PK를 가지는 변수에 선언
@GeneratedValue(strategy=GenerationType.IDENTITY | TABLE | SEQUENCE | AUTO)
- ID값을 자동으로 생성할지 전략을 선택
- 1. AUTO : (persistence provider가) 특정 DB에 맞게 자동 선택
2. IDENTITY : DB의 identity 컬럼을 이용
3. SEQUENCE : DB의 시퀀스 컬럼을 이용
4. TABLE : 유일성이 보장된 데이터베이스 테이블을 이용
@Column(name="sq", updatable=false)
- 멤버 변수와 DB 컬럼명을 일치화 시키거나 선언
선언을 안할 시 DB 컬럼명과 일치 시킨다.
@JsonIgnore (추가 정보: 이동)
- 응답 객체에 특정 필드를 추가하고 싶지 않을 때 선언
@Enumerated(EnumType.STRING)
- Enum 타입을 DB에 저장할 때 사용
<!--JPA 연관관계 매핑=>조인과 관련된 녀석들 중요하다 이녀석은 머루님의 블로그에서 공부하는걸 추천: 이동-->
@ManyToOne(targetEntity=Book.class)
@OneToMany(targetEntity=Member.class)
@OneToOne(targetEntity=Member.class)
@ManyToMany
@JoinColumn(name="book")
3) Listener (@EntityListeners 선언한 엔티티관련된 리스너를 설정)
@PrePersist
@PreUpdate
4) Repository
@Repository
Service
@Service
@Autowired
- 빈간의 의존성하는 객체를 자동으로 삽입해주며 생성자, 필드, 메서드 세 곳에 적용이 가능하다.
@value
- application.properties등의 프로퍼티 파일의 값을 불러올 수 있다.
- ex).@Value("${image.upload.path}")
@PostConstruct
- 의존하는 객체를 설정한 이후에 초기화 작업을 수행할 메서드에 적용
- init-method속성과 같다.
@PreConstruct
- 컨테이너에서 객체를 제거하기 전에 호출 될 메서드에 적용
- destroy-mehotd 속성과 같다.
Lombok (설치: 이동)
- 어노테이션을 기반으로 개발자가 get/set/tostring 등의 메소드들을 자동으로 생성해주는 고마운 라이브러 리이다. 다만 팀단위로 개발할 시 모두가 설치해야하는 단점이 있다.
@ToString
@Getter
@Setter
커스텀 어노테이션 만드는법
@interface MyAnnotation { // @interface 키워드를 이용함 으로써 어노테이션 정의 String value() default "기본값"; String name() default "철철블로그"; }
참고: http://sjh836.tistory.com/8 [빨간색코딩]
'BackEnd > Java' 카테고리의 다른 글
Java의 다형성 (0) | 2018.07.18 |
---|---|
Java Collection Framework (0) | 2018.07.17 |
스프링 시큐리티 _요청 가로채기 (0) | 2018.07.12 |
HashMap (0) | 2018.07.11 |
JPA에 대한 소개, 활용방안, Spring 프레임워크와 통합 (0) | 2018.07.02 |
- Total
- Today
- Yesterday
- facebook login
- Spring
- CSS
- JavaScript
- mobx
- jQuery
- Java
- 파이썬
- data component
- 파이썬3
- data table component
- JSON
- 페이스북 로그인
- angular router
- data component module
- data grid component
- https://www.tistory.com/auth/logout/
- MySQL
- Router
- react
- python3
- Python
- Spring Boot
- localStorage
- Redux
- Angular
- JPA
- React-router
- data gird component
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |