어노테이션 역할과 사용 용도
by 볼빵빵오춘기어노테이션
https://luckygirljinny.tistory.com/154
Spring Framework 어노테이션
@Configuration
자바 클래스를 Spring 설정 클래스로 지정한다.
주로 @Bean 어노테이션을 사용하여 빈을 정의한다.
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyServiceImpl();
}
}
@EnableWebSecurity
Spring Security 설정을 활성화한다.
@EnableWebSecurity 사용하면 Spring Security를 사용하여 애플리케이션을 보호할 수 있다.
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
// Security configuration here
}
@EnableMethodSecurity
메서드 수준에서 보안을 적용할 수 있도록 활성화한다.
이를 통해 메서드 호출 시 접근 권한을 검사할 수 있다.
@Configuration
@EnableWebSecurity
@EnableMethodSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
// Security configuration here
}
@Autowired
스프링의 의존성 주입을 수행하는 어노테이션이다.
주로 생성자, 필드, 메서드에 사용된다.
@Service
public class MyService {
private final MyRepository myRepository;
@Autowired
public MyService(MyRepository myRepository) {
this.myRepository = myRepository;
}
}
@Bean
스프링 컨테이너에 빈을 등록하는 메서드에 사용된다.
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyServiceImpl();
}
}
@Controller
Spring MVC의 컨트롤러 클래스로 지정한다.
HTTP 요청을 처리하고 뷰를 반환하는 역할을 한다.
@Controller
public class MyController {
@GetMapping("/home")
public String home() {
return "home";
}
}
@GetMapping
HTTP GET 요청을 처리하는 메서드에 사용된다.
URL 경로를 매핑한다.
@Controller
public class MyController {
@GetMapping("/home")
public String home() {
return "home";
}
}
@PostMapping
HTTP POST 요청을 처리하는 메서드에 사용된다.
URL 경로를 매핑한다.
@Controller
public class MyController {
@PostMapping("/submit")
public String submit(@ModelAttribute MyForm form) {
// handle form submission
return "result";
}
}
@RestController
@Controller와 @ResponseBody를 결합한 것이다.
JSON/XML 형식의 데이터를 반환하는 RESTful 웹 서비스 컨트롤러로 사용된다.
@RestController
public class MyRestController {
@GetMapping("/api/data")
public MyData getData() {
return new MyData();
}
}
Lombok 어노테이션
@Getter
Lombok이 자동으로 모든 필드에 대한 게터 메서드를 생성하도록 한다.
@Getter
public class MyClass {
private String name;
}
@Setter
Lombok이 자동으로 모든 필드에 대한 세터 메서드를 생성하도록 한다.
@Setter
public class MyClass {
private String name;
}
@ToString
Lombok이 자동으로 toString() 메서드를 생성하도록 한다.
@ToString
public class MyClass {
private String name;
private int age;
}
@Data
Lombok이 @Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor를 결합한 어노테이션이다.
@Data
public class MyClass {
private String name;
private int age;
}
@NoArgsConstructor
Lombok이 기본 생성자를 자동으로 생성하도록 한다.
@NoArgsConstructor
public class MyClass {
private String name;
private int age;
}
@Builder
Lombok이 빌더 패턴을 적용하여 객체를 생성할 수 있도록 한다.
@Builder
public class MyClass {
private String name;
private int age;
}
// Usage
MyClass myClass = MyClass.builder().name("John").age(25).build();
JPA 어노테이션
@Entity
클래스가 JPA 엔티티임을 나타낸다.
데이터베이스 테이블과 매핑된다.
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
}
@Table
엔티티 클래스와 매핑되는 테이블을 지정한다.
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
}
@Repository
스프링 데이터 접근 계층을 나타내며, 데이터베이스와의 상호작용을 처리하는 클래스에 사용된다.
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}
@Modifying
JPA 쿼리 메서드에 사용되며, 데이터베이스의 데이터를 수정(UPDATE)하거나 삭제(DELETE)할 때 사용된다.
@Modifying
@Query("update User u set u.name = :name where u.id = :id")
void updateUserName(@Param("id") Long id, @Param("name") String name);
@Query
JPQL 또는 네이티브 SQL 쿼리를 정의하는 데 사용된다.
@Query("select u from User u where u.name = :name")
List<User> findByName(@Param("name") String name);
Spring 서비스 어노테이션
@Service
서비스 레이어를 나타내며, 비즈니스 로직을 처리하는 클래스에 사용된다.
@Service
public class UserService {
private final UserRepository userRepository;
@Autowired
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
}
@Transactional
메서드 또는 클래스에 트랜잭션 처리를 적용한다.
데이터베이스 작업이 성공적으로 완료되면 커밋하고, 오류가 발생하면 롤백한다.
@Service
@Transactional
public class UserService {
private final UserRepository userRepository;
@Autowired
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
}
Spring Boot 어노테이션
@SpringBootApplication
스프링 부트 애플리케이션의 메인 클래스를 지정한다.
@Configuration, @EnableAutoConfiguration, @ComponentScan을 결합한 것이다.
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
Spring 일반 어노테이션
@Component
스프링이 관리하는 빈을 정의한다.
@Service, @Repository, @Controller와 같은 특정 역할을 나타내는 어노테이션이 없을 때 사용된다.
@Component
public class MyComponent {
public void doSomething() {
System.out.println("Doing something...");
}
}
'👩🏻💻 About 프로그래밍 > ect' 카테고리의 다른 글
HTTP 메서드 - POST, PUT, GET, PATCH, DELETE (0) | 2024.07.20 |
---|---|
@RestController vs @Controller (2) | 2024.07.15 |
http 상태에러 401 Unauthorized vs 403 Forbidden (0) | 2024.07.13 |
HTTP 상태 코드의 구조와 종류 (0) | 2024.07.13 |
프레임워크 vs 라이브러리 vs API (0) | 2024.07.03 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기