본문 바로가기

학습/Java_Spring

자주 사용한 애너테이션 정리

### @Slf4j
`@Slf4j`는 Lombok 라이브러리에서 제공하는 애너테이션으로, 클래스에 로깅 기능을 추가합니다. 이 애너테이션을 사용하면 `log` 객체를 생성할 필요 없이 로깅을 간편하게 사용할 수 있습니다.
```java
@Slf4j
public class MyClass {
    public void myMethod() {
        log.info("This is an info message");
    }
}
```

### @RequiredArgsConstructor
`@RequiredArgsConstructor`는 Lombok에서 제공하는 애너테이션으로, `final` 필드나 `@NonNull` 애너테이션이 붙은 필드에 대해 생성자를 자동으로 생성해줍니다. 주로 의존성 주입을 위해 사용됩니다.
```java
@RequiredArgsConstructor
public class MyClass {
    private final MyService myService;
}
```

### @Controller
`@Controller`는 Spring MVC에서 사용되는 애너테이션으로, 클래스가 웹 요청을 처리하는 컨트롤러임을 나타냅니다. 요청을 처리하고 적절한 뷰를 반환하는 역할을 합니다.
```java
@Controller
public class MyController {
    @GetMapping("/hello")
    public String hello(Model model) {
        model.addAttribute("message", "Hello, World!");
        return "hello";
    }
}
```

### @RequestMapping
`@RequestMapping`은 요청 URL을 컨트롤러나 핸들러 메서드와 매핑하는 데 사용됩니다. 클래스와 메서드 레벨에서 모두 사용할 수 있습니다.
```java
@RequestMapping("/home")
public class MyController {
    @RequestMapping("/welcome")
    public String welcome() {
        return "welcome";
    }
}
```

### @Profile
`@Profile`은 특정 프로파일이 활성화된 경우에만 해당 빈을 활성화하도록 지정합니다. 예를 들어, "admin" 프로파일이 활성화된 경우에만 컨트롤러가 활성화됩니다.
```java
@Profile("admin")
@Controller
public class AdminController {
}
```

### @GetMapping
`@GetMapping`은 HTTP GET 요청을 특정 핸들러 메서드와 매핑하는 데 사용됩니다. `@RequestMapping(method = RequestMethod.GET)`의 축약형입니다.
```java
@GetMapping("/list")
public String list() {
    return "list";
}
```

### @Service
`@Service`는 비즈니스 로직을 담당하는 서비스 클래스를 나타내는 Spring 애너테이션입니다. 주로 서비스 계층에서 사용됩니다.
```java
@Service
public class MyService {
}
```

### @Mapper
`@Mapper`는 MyBatis에서 매퍼 인터페이스를 나타내는 애너테이션입니다. 매퍼 인터페이스는 SQL 쿼리를 메서드와 매핑하는 역할을 합니다.
```java
@Mapper
public interface MyMapper {
    List<MyEntity> findAll();
}
```

### @SpringBootApplication
`@SpringBootApplication`은 Spring Boot 애플리케이션의 시작 클래스에 사용됩니다. 여러 애너테이션을 결합하여 Spring Boot 애플리케이션의 설정을 간소화합니다.
```java
@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}
```

### @MapperScan
`@MapperScan`은 MyBatis 매퍼 인터페이스를 검색하고 자동으로 빈으로 등록하는 데 사용됩니다. 주로 Spring Boot 애플리케이션 설정 클래스에 사용됩니다.
```java
@SpringBootApplication
@MapperScan(basePackages = "com.example.mapper")
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}
```.