어노테이션 | 기능설명 |
---|---|
@Configuration | 해당 클래스를 스프링의 설정 클래스로 지정합니다. 스프링 컨테이너가 시작될 때 해당 클래스를 참조하여 설정 정보를 로딩합니다. 스프링의 다른 어노테이션들을 사용하려면 해당 클래스에 @Configuration 어노테이션을 추가해야 합니다. |
@Bean | 해당 메서드가 스프링 빈으로 등록됨을 표시합니다. 스프링은 @Bean 어노테이션이 있는 메서드를 호출하여 객체를 생성하고, 컨테이너에 등록합니다. 빈 이름을 지정하지 않으면 메서드 이름이 빈 이름이 됩니다. |
@Data | 클래스에 대한 Getter, Setter, EqualsAndHashCode, RequiredArgsConstructor, toString 메서드를 생성해줍니다. 이 어노테이션을 사용하면 클래스의 코드 양을 줄일 수 있습니다. 클래스에 필드를 추가하거나 삭제할 때, 롬복의 @Data 어노테이션이 자동으로 해당 필드에 대한 Getter, Setter, equals, hashCode, toString 메서드를 생성합니다. |
@Component | 해당 클래스가 스프링의 컴포넌트임을 표시합니다. 스프링은 @Component 어노테이션이 붙은 클래스를 스캔하여 컨테이너에 등록합니다. @Component 어노테이션은 스프링에서 제공하는 기본 어노테이션 중 하나로, 다른 컴포넌트 어노테이션들은 이를 기반으로 만들어졌습니다. |
@ConfigurationProperties(prefix = "spring.") | 스프링 부트에서 외부 설정 파일의 값을 해당 클래스에 주입합니다. @ConfigurationProperties 어노테이션을 사용하면 properties나 yaml 파일에서 값을 로딩하여 클래스의 필드에 주입할 수 있습니다. prefix 옵션을 이용하여 로딩할 설정 파일의 접두사를 지정할 수 있습니다. |
@Override | 상위 클래스나 인터페이스의 메서드를 재정의하고 있다는 것을 명시적으로 나타냅니다. 자바에서 메서드 재정의는 부모 클래스나 인터페이스의 메서드를 자식 클래스에서 재정의하여 사용하는 것을 말합니다. 만약 상위 클래스나 인터페이스에 해당 메서드가 없다면 컴파일 에러가 발생합니다. |
@NonNull | 해당 필드가 null 값을 가질 수 없음을 표시합니다. 롬복의 어노테이션이 아니라 자바 언어에서 제공하는 어노테이션 중 하나입니다. |
@Service | 해당 클래스가 비즈니스 로직을 담당하는 서비스임을 표시합니다. 스프링에서 @Component 어노테이션과 유사하지만, 비즈니스 로직을 담당한다는 의미가 분명하게 드러납니다. |
@Value | 해당 클래스의 필드 값을 외부 설정 파일에서 주입받을 때 사용됩니다. @Value 어노테이션을 사용하면 스프링이 외부 설정 파일에서 값을 로딩하여 해당 필드에 주입합니다. @Value 어노테이션을 사용하면 주입받는 값의 타입을 자동으로 변환할 수 있습니다. |
@EnableWebSecurity | 스프링 시큐리티를 사용하는 애플리케이션에서 웹 보안을 활성화합니다. 스프링 시큐리티는 인증과 권한 부여를 위한 프레임워크로, 웹 보안을 구현할 때 많이 사용됩니다. |
@Autowired | 스프링 컨테이너에서 해당 타입의 빈을 찾아서 필드나 생성자에 주입합니다. 스프링은 @Autowired 어노테이션을 사용하여 객체 간 의존성을 자동으로 주입할 수 있습니다. @Autowired 어노테이션을 사용하면 생성자 주입, 필드 주입, 메서드 주입 등의 방법으로 의존성 주입이 가능합니다. |
@Getter | 해당 클래스의 필드에 대한 Getter 메서드를 생성합니다. 롬복의 어노테이션 중 하나로, 클래스의 코드 양을 줄이는 데 사용됩니다. Getter 메서드를 자동으로 생성함으로써, 코드의 가독성을 높일 수 있습니다. |
@Setter | 해당 클래스의 필드에 대한 Setter 메서드를 생성합니다. 롬복의 어노테이션 중 하나로, 클래스의 코드 양을 줄이는 데 사용됩니다. Setter 메서드를 자동으로 생성함으로써, 코드의 가독성을 높일 수 있습니다. |
@ToString | 해당 클래스의 ToString 메서드를 생성합니다. 롬복의 어노테이션 중 하나로, 객체의 필드 값을 출력하는 ToString 메서드를 자동으로 생성합니다.이 어노테이션을 사용하면 객체를 디버깅할 때 유용합니다. |
@EnableEncryptableProperties | Jasypt 라이브러리를 사용하여 스프링 부트 애플리케이션의 프로퍼티 값을 암호화합니다. Jasypt는 스프링 부트에서 암호화 기능을 제공하는 라이브러리입니다. |
@Builder | 해당 클래스에 빌더 패턴을 적용합니다. 롬복의 어노테이션 중 하나로, 생성자 대신 빌더 패턴을 사용할 수 있습니다. 빌더 패턴은 객체 생성 과정을 유연하게 만들어주고, 가독성을 높여줍니다. |
@NoArgsConstructor | 해당 클래스에 파라미터 없는 기본 생성자를 생성합니다. 롬복의 어노테이션 중 하나로, 코드 양을 줄이는 데 사용됩니다.JPA에서 엔티티를 생성할 때 기본 생성자가 필요합니다. |
@AllArgsConstructor | 해당 클래스에 모든 필드를 인자로 받는 생성자를 생성합니다. 롬복의 어노테이션 중 하나로, 코드 양을 줄이는 데 사용됩니다. 모든 필드를 인자로 받는 생성자를 자동으로 생성함으로써, 객체 생성 과정을 단순화할 수 있습니다. |
@Entity | 해당 클래스가 JPA의 엔티티임을 표시합니다. JPA는 객체를 데이터베이스에 저장할 수 있는 엔티티로 매핑하는 기술입니다. |
@Table(name = "company") | 해당 엔티티가 데이터베이스에서 사용할 테이블의 이름을 지정합니다. name 속성에는 테이블의 이름을 지정할 수 있습니다. 특수 문자가 포함된 테이블 이름은 백틱(`)으로 감싸야 합니다. |
@Id | 해당 필드가 엔티티의 기본 키임을 표시합니다. JPA에서 엔티티의 기본 키를 지정할 때 사용합니다. |
@GeneratedValue(strategy = GenerationType.IDENTITY) | 기본 키 값을 자동으로 생성하는 전략을 설정합니다. GenerationType.IDENTITY는 데이터베이스에서 기본 키 값을 자동으로 생성하는 전략입니다. |
@Column(name = "id", nullable = false) | 해당 필드가 데이터베이스에서 사용할 컬럼의 이름과 제약 조건을 지정합니다. name 속성에는 컬럼의 이름을 지정할 수 있습니다. nullable 속성에는 해당 컬럼이 null 값을 허용하는지 여부를 지정할 수 있습니다. |
@ManyToMany | 양방향 다대다 관계를 정의할 때 사용하는 어노테이션입니다. 연결 테이블을 자동으로 생성하여 관계를 유지합니다. |
@OneToMany | 일대다 관계를 정의할 때 사용하는 어노테이션입니다. 일(One) 쪽에 해당하는 엔티티에서 다(Many) 쪽 엔티티를 컬렉션으로 관리합니다. |
@RepositoryRestResource | Spring Data REST에서 RESTful 엔드포인트를 생성할 때 사용하는 어노테이션입니다. 엔티티의 CRUD 작업을 수행할 수 있는 RESTful API를 생성합니다. |
@Embeddable | 엔티티에서 사용할 수 있는 재사용 가능한 값 타입을 정의할 때 사용하는 어노테이션입니다. 엔티티에서 해당 값 타입을 필드로 사용할 수 있습니다. |
@Serial | Serializable 인터페이스를 구현할 때 사용하는 어노테이션입니다. JVM에서 객체를 직렬화할 때 사용됩니다. |
@EmbeddedId | 복합키를 사용하는 경우 복합키 클래스에 적용하는 어노테이션입니다. 엔티티에서 복합키를 사용할 수 있도록 합니다. |
@MapsId | 복합키를 사용하는 경우 다른 엔티티의 PK 값을 참조하는 외래키에 적용하는 어노테이션입니다. 복합키 클래스의 필드 중 하나를 다른 엔티티의 PK 값으로 매핑합니다. |
@JoinColumn | 엔티티 간의 관계에서 외래키 컬럼의 이름을 지정할 때 사용하는 어노테이션입니다. 기본값은 필드명과 "_id"를 합친 형태입니다. |
@CreationTimestamp | 엔티티가 생성될 때 자동으로 생성일자를 저장할 때 사용하는 어노테이션입니다. Hibernate가 제공하는 어노테이션입니다. |
@UpdateTimestamp | 엔티티가 수정될 때 자동으로 수정일자를 저장할 때 사용하는 어노테이션입니다. Hibernate가 제공하는 어노테이션입니다. |
@Inheritance(strategy = InheritanceType.SINGLE_TABLE) | 상속 구조를 매핑할 때 사용하는 어노테이션입니다. 단일 테이블 전략을 사용하여 상속 구조를 하나의 테이블에 저장합니다. |
@DiscriminatorColumn(name = "adaptable_type") | 상속 구조의 엔티티에서 엔티티 타입을 식별하기 위해 사용되는 어노테이션 엔티티가 상속 구조를 가지고 있을 때, 하위 엔티티들의 타입을 구분하기 위한 컬럼을 지정한다. |
@GeneratedValue(strategy = GenerationType.IDENTITY) | 엔티티의 ID 속성 값을 자동으로 생성할 때 사용되는 전략을 지정합니다. GenerationType.IDENTITY는 IDENTITY 컬럼을 사용하여 값을 자동으로 생성합니다. |
@DiscriminatorValue | 상속 계층 구조에서 자식 엔티티의 유형을 식별하는 데 사용됩니다. @DiscriminatorColumn이 지정된 경우, 해당 컬럼 값과 일치하는 값을 지정하여 자식 엔티티를 식별합니다. |
@Query | JPA에서 사용되는 쿼리를 정의하는 데 사용됩니다. 메소드에 지정된 JPQL 쿼리는 메소드 호출 시 실행됩니다. |
@RestController | Spring MVC에서 RESTful 웹 서비스를 생성하는 데 사용됩니다. @Controller와 비슷하지만, 반환 값이 JSON, XML 등의 형식으로 직렬화됩니다. |
@RequestMapping("/auth") | 요청 URL에 대한 매핑을 지정하는 데 사용됩니다. "/auth"와 같이 URL 패턴을 지정하여 해당 패턴의 요청이 이 어노테이션이 지정된 메소드에서 처리되도록 할 수 있습니다. |
@RequiredArgsConstructor | 클래스에 final로 선언된 필드를 초기화하는 생성자를 생성하는 데 사용됩니다. 롬복 라이브러리의 어노테이션으로, 생성자 코드를 자동으로 생성하여 코드의 중복을 줄일 수 있습니다. |
@CrossOrigin(origins = "*") | CORS(Cross-Origin Resource Sharing)를 허용하는 데 사용됩니다. Spring MVC에서 웹 브라우저에서 올바른 도메인에서 요청을 보낼 수 있도록 지정합니다. "*"를 사용하면 모든 도메인에서 요청을 허용합니다. |
@PostMapping | HTTP POST 요청과 매핑되는 핸들러 메소드를 정의하는 데 사용되는 어노테이션입니다. @RequestMapping과 비슷하지만, HTTP POST 메소드만 처리하도록 제한합니다. |
@RequestBody | HTTP 요청 본문(body)을 메소드 인자로 변환하는 데 사용되는 어노테이션입니다. 보통 JSON 형태로 전달되는 데이터를 객체로 변환할 때 많이 사용됩니다. |
@Qualifier | 자동 의존성 주입시 사용될 빈을 선택하는 데 사용되는 어노테이션입니다. 동일한 타입의 빈이 여러 개 존재할 때, 어떤 빈을 주입할지 선택할 수 있습니다. |
@SpringBootApplication | Spring Boot 애플리케이션을 실행하는 데 사용되는 클래스에 붙이는 어노테이션입니다. @Configuration, @EnableAutoConfiguration, @ComponentScan을 함께 사용하는 것과 동일한 효과가 있습니다. |
@EnableEncryptableProperties | Jasypt를 사용하여 암호화된 프로퍼티를 처리하는 데 사용되는 어노테이션입니다. application.yml이나 application.properties에서 Jasypt를 사용하여 암호화된 프로퍼티를 설정할 수 있습니다. |
테스트
어노테이션 | 기능 설명 |
---|---|
@Import(JasyptConfig.class) | JasyptConfig 클래스를 스프링 컨텍스트에 추가하는 역할을 한다. |
@ExtendWith(SpringExtension.class) | JUnit5에서 테스트를 실행할 때 Spring의 테스트 확장 기능을 사용하도록 지정하는 역할을 한다. |
@DataJpaTest | Spring Data JPA 테스트를 수행하도록 지정하는 역할을 한다. |
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) | 테스트용 데이터베이스를 자동으로 구성하지 않도록 지정하는 역할을 한다. |
@Test | 해당 메서드가 테스트 메서드임을 나타내는 역할을 한다. |
@DisplayName | 테스트 메서드의 이름을 지정하는 역할을 한다. 이 어노테이션으로 지정된 이름은 테스트 결과 출력에 사용된다. |
'Backend > Java' 카테고리의 다른 글
Spring MySQL 연결 오류 (0) | 2024.04.16 |
---|