Spring 어노테이션WEB JAVA SPRING/etc2023. 8. 28. 11:08
Table of Contents
본래 주석이란 뜻으로, 인터페이스를 기반으로 한 문법이다.
주석과는 그 역할이 다르지만 주석처럼 코드에 달아 클래스에 특별한 의미를 부여하거나 기능을 주입할 수 있다.
<기능>
- 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보 제공
- 소프트웨어 개발 환경이 빌드나 배포시 코드를 자동으로 생성할 수 있도록 정보 제공
- 런타임에 특정 기능을 실행하도록 정보를 제공
자바 코드에 적용되는 내장 어노테이션
@Override
- 선언한 메서드가 오버라이드 되었다는 것을 나타냅니다.
- 만약 상위(부모) 클래스(또는 인터페이스)에서 해당 메서드를 찾을 수 없다면 컴파일 에러를 발생 시킵니다.
public class Animal {
public void speak() {
}
public String getType() {
return "Generic animal";
}
}
public class Cat extends Animal {
@Override
public void speak() { // This is a good override.
System.out.println("Meow.");
}
@Override
public String gettype() { // Compile-time error due to mistyped name.
return "Cat";
}
}
@Deprecated
- 해당 메서드가 더 이상 사용되지 않음을 표시합니다.
- 만약 사용할 경우 컴파일 경고를 발생 키십니다.
@SuppressWarnings
- 선언한 곳의 컴파일 경고를 무시하도록 합니다.
@SafeVarargs
- Java7 부터 지원하며, 제너릭 같은 가변인자의 매개변수를 사용할 때의 경고를 무시합니다.
@FunctionalInterface
- Java8 부터 지원하며, 함수형 인터페이스를 지정하는 어노테이션입니다.
- 만약 메서드가 존재하지 않거나, 1개 이상의 메서드(default 메서드 제외)가 존재할 경우 컴파일 오류를 발생 시킵니다.
참고 : https://bangu4.tistory.com/199
~공부하며 추가중~~
#어노테이션
@ToString(exclude= {"val3"}) | 원하는 속성만 출력되도록 조정함 ->val3 속성은 출력x |
@GetMapping("hello") | hello url로 이동하면 컨트롤러를 실행하겠다. |
@RunWith(SpringRunner.class) | spring과 관련된 test를 하겠다 |
@SpringBootTest | 이것만 쓰면 application context 전부 로딩해서 무거워진다. 위에거 쓰는 이유 |
@Autowired | 메서드가 자동으로 호출되고, 인스턴스가 자동으로 주입, 변수, Setter메서드, 생성자, 일반 메서드에 적용 |
@EqualsAndHashCode(of = {"~"}) | 동등성 비교- of : 포함, exclude : 제외 |
@Transactional | entity 매니저를 통한 데이터 변경은 트랜잭션안에서 이루어져야 하기 때문에 꼭 넣기 |
@OneToMany(mappedBy = "member") | mappedBy : 연관관계 주인이 아니다. order 테이블에 있는 member필드에 의해 매핑된것 , 읽기전용 : 여기에 값을 넣는다해서 외래키 값이 변경되지 않음 |
@JoinColumn | 매핑을 어떻게 할건지 : 연관관계 주인으로 fk |
@Enumerated(EnumType.STRING) | enum은 꼭 넣어야함, ordinal : 숫자로 들어감..1,2,3 이렇게 들어가서 중간에 뭐가 끼면 숫자가 밀린다. 꼭 String으로 쓸것 |
@Inheritance (strategy = InheritanceType.JOINED) |
상속관계 부모에 작성 ( Item -> Album,Book, Movie ) , joined : 가장 정규화된 스타일..싱글테이블 |
@DiscriminatorValue("A") | 상속관계 매핑 (album) |
@PersistenceContext | spring이 jpa가 Entity Manager를 만들어서 EntityManager를 여기에 주입, EntityManager em; 선언하며 엔티티 매니저를 주입해준다. |
@Repository | Component scan해서 spring bean 자동등록 |
@Transactional(readOnly = true) | JPA의 데이터 변경시에 꼭 있어야 함 (트랜잭션 안에서 변경할 것) 그래야 lazy로딩같은것도 된다 , (readOnly = true) : jpa 성능 좋게 해줌 (읽기전용 -> 부하를 많이 주지 않음) |
@Transactional | 이렇게 따로 설정하면 이게 우선순위 (기본값 readOnly=false) , 롤백한다(=DB에 있는거 다버린다) |
@ExceptionHandler | Controller계층에서 발생하는 에러를 잡아서 메서드로 처리 |
#Lombok
getter/setter/tosting등의 메소드 자동으로 호출해준다.
@NonNull | null XX , NullPointerExcenption에 대한 대비책 |
@Getter/Setter | get,set |
@Builder | 빌더패턴 사용할 수 있도록 코드 생성 |
@EqualsAndHashCode | |
@Data | @Getter, @Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode, 파라미터가 없는 기본생성자까지 자동으로 생성 |
@RequiredArgsConstructor | 지정된 속성들에 대한 생성자 생성 (final이 있는 필드만 생성자 만들어줌) |
@NoArgsConstructor | 파라미터 받지않는 생성자 생성 |
@AllArgsConstructor | 모든 속성에 대한 생성자 생성 |
@Value | |
@Log | |
@Synchronized | |
@SneakyThrows |
of( ) | 설명 |
PageRequest.of(int page, int size) | 페이지번호(0부터시작),페이지당 데이터수 |
PageRequest.of(int page, int size, Sort.Direction.ASC, String~) |
페이지번호(0부터시작),페이지당 데이터수,정렬방향,칼럼들 |
PageRequest.of(int page, int size,Sort | 페이지번호(0부터시작),페이지당 데이터수,정렬방향 |
'WEB JAVA SPRING > etc' 카테고리의 다른 글
객체지향 프로그래밍의 4가지 특징 (0) | 2023.08.28 |
---|---|
MVC model2 //DispatcherServlet (0) | 2023.08.28 |
Spring Security 인증/인가 (0) | 2023.08.28 |
Spring Data JPA(Java Persistence API) (0) | 2023.08.28 |
REST API (0) | 2023.08.28 |