- 소스코드에 @어노테이션의 형태로 표현하며 클래스, 필드, 메소드의 선언부에 적용할 수 있는 특정기능이 부여된 표현법을 말함
- 애플리케이션 규모가 커질수록, xml 환경설정이 매우 복잡해지는데 이러한 어려움을 개선시키기 위해 자바 파일에 어노테이션을 적용해서 개발자가 설정 파일 작업을 할 때 발생시키는 오류를 최소화해주는 역할
- 어노테이션 사용으로 소스 코드에 메타데이터를 보관할 수 있고, 컴파일 타임의 체크뿐 아니라 어노테이션 API를 사용해 코드 가독성도 높여줌
@Bean
- 객체 생성
@Autowired
- 객체 자동 주입
@Valid
- validation 실행
@Controller
- 컨트롤러 클래스 내의 메소드의 리턴 타입으로 문자열을 사용했을 때, 문자열에 해당하는 View를 찾아서 클라이언트에게 반환해준다.
@GetMapping(”/”)
- @RequestMapping(value=”/”, method=RequestMethod.GET)을 사용해도 동일
- GET 방식을 “/” 요청이 들어왔을 때 실행될 메소드
model.addAttribute(String name, Object value);
- View의 속성명에 맞는 data가 전달 됨
- model 객체에 data 담기
@Enumerated(EnumType.STRING)이 어노테이션을 붙이지 않으면 정수가 저장된다. (0, 1, 2 ... )
- Enum 값을 String으로 저장하고 싶을 때 사용
@Log4j2
- 로그 사용
Lombok 관련
@Getter
- Getter 메소드 생성
@Setter
- Setter 메소드 생성
@Builder
- builder() : 빌더 클래스의 인스턴스 생성
- build() : 실제 생성자 호출하여 객체 생성
- 빌더 패턴을 자동으로 생성해준다.
@NoArgsConstructor(access = AccessLevel.PROTECTED)
- 파라미터가 없는 기본 생성자 생성
- 생성자를 통해서 값 변경 목적으로 접근하는 메시지들 차단
- @Entity 적용시 기본생성자는 필수이기 때문에 롬복에서 제공하는 이 어노테이션을 사용한다.
@AllArgsConstructor
- @Builder와 @NoArgsConstructor를 함께 사용시 모든 매개 변수를 받는 생성자가 없으면 에러가 발생한다.
- 모든 필드 값을 파라미터로 받는 생성자 생성
@ToString
- 가능하면 안적는게 좋음
- 내용을 보기 위해 사용
@Date
- 롬복에서 제공하는 어노테이션
- @Getter, @Setter, @ToString 모두 포함
REST 관련
@RestController
- Controller가 REST 방식을 처리하기 위한 것
@RequestMapping
- REST API 호출 시 작성된 URL의 method 값에 따라 맵핑 시켜준다.
@ResponseBody
- JSP 같은 View로 전달되는 것이 아니라 데이터 자체를 전달
@RequestBody
- HTTP 요청의 body를 자바 객체로 변환 시켜준다.
@PathVariable
- 주소의 일부분을 변수로 사용하고 싶을 때 사용하는 어노테이션
- 사용 시 null이나 공백이 들어가면 안됨
- 컨트롤러에서 url 입력할때 { 변수명 } 으로 작성하고
@GetMapping("/{id}")
- 메소드 정의할 때 @PathVariable("변수명")
public String test(@PathVariable Long id){
@RequestParam
- HTTP를 통하여 받아온 데이터를 단일 파라미터로 변환해준다.
Entity
@Lob
- 255개 이상의 문자를 저장하고 싶을 때 지정
- Large Object
@Entity
- 기본적으로 클래스 이름과 동일한 테이블과 매핑된다.
- 엔티티와 테이블명을 다르게 하고 싶을 땐 @Table 사용
- JPA를 사용해서 테이블과 매핑할 클래스에 필수로 붙여야 한다.
@Table
- 테이블 이름은 원래 클래스 이름으로 저장되는데, @Table(name=”이름”)을 사용하면 원하는 테이블 이름으로 저장 가능
@Id
- 엔티티의 필수 어노테이션으로서 @Id가 없는 엔티티는 사용할 수 없다.
- 테이블의 키본키를 매핑한다
@DynamicUpdate
- 실제 값이 변경된 컬럼으로만 update 쿼리를 만들어주는 어노테이션
@GeneratedValue(Strategy = GenerationType.AUTO)
- id 값을 따로 할당하지 않아도 데이터베이스가 자동으로 AUTO_INCREMENT를 하여 기본키를 생성해줌
- 기본키 생성을 데이터베이스에게 위임하는 방식
@Column
- 필드와 컬럼을 매핑할 때 사용한다.
@JoinColumn
- 외래키를 매핑할 때 사용한다.
테스트 관련
@Test
- @SpringBootTest와 함께 사용
- Unit Test를 위해 사용
@DisplayName
- ex) @DisplayName(”상품명 조회 테스트”)
- 테스트 이름 지정
@SpringBootTest
- 테스트 케이스가 실행될 때 테스트에 필요한 모든 설정과 빈들을 자동으로 초기화 하는 역할
@Transactional
- Transactional을 붙이면 테스트는 가능하나 DB에 저장이 되지 않는다.
서비스
@Service
- 서비스 레이어 클래스인 것을 명시
@Transactional
- 해당 범위의 메서드가 트랜잭션이 되도록한다
@RequiredArgsContructor
- 클래스의 의존성 관계가 변경될 때마다 생성자 코드를 수정할 필요가 없다.
- @Service @Transactional @RequiredArgsConstructor public class MemberService { private final MemberRepository memberRepository; }
- final이 선언된 모든 필드를 인자값으로 하는 생성자를 생성해준다.
빈 관련
@Bean
- 개발자가 컨트롤이 불가능한 외부 라이브러리들을 Bean으로 등록하고 싶은 경우에 사용
@Component
- 개발자가 직접 컨트롤이 가능한 Class들의 경우 사용
@Configuration
- 설정 파일로 사용 시
@EnableJpaAuditing
- 감시 기능
'Web & Android > SpringBoot' 카테고리의 다른 글
[SpringBoot] 한글 변환(\u~) (0) | 2023.10.14 |
---|---|
[SpringBoot] 에러 처리 (0) | 2023.10.14 |
[SpringBoot] 페이징 처리 (0) | 2023.10.14 |
[SpringBoot] ResponseEntity (0) | 2023.10.14 |
[SpringBoot] Entity (0) | 2023.10.14 |