Spring의 애노테이션은 특정 클래스, 메서드, 필드에 기능을 부여하거나 설정을 할 수 있도록 도와줍니다. 예를 들어, @Controller를 사용하면 해당 클래스가 컨트롤러로 인식되고, @Autowired를 사용하면 의존성 주입이 가능해집니다. 이러한 애노테이션 덕분에 XML 설정 파일을 최소화하고, 코드 위주로 설정과 관리를 할 수 있습니다.
이 애노테이션들은 Spring이 빈(bean)을 관리하기 위해 사용합니다.
@Component: 모든 Spring 빈으로 등록될 클래스에 사용합니다. 특별한 역할이 없고 일반적인 빈으로 사용됩니다.@Controller: 웹 요청을 처리하는 컨트롤러 클래스에 사용됩니다.@Service: 비즈니스 로직을 담당하는 클래스에 사용됩니다.@Repository: 데이터베이스와 관련된 작업을 수행하는 클래스에 사용합니다.Spring은 위 애노테이션들이 붙어 있는 클래스들을 스캔하고, 자동으로 빈으로 등록해줍니다.
@Autowired는 의존성 주입에 사용되는 애노테이션으로, 객체 간의 의존성을 자동으로 연결해줍니다. Spring은 @Autowired가 붙어 있는 필드, 생성자, 메서드에 빈을 자동으로 주입해줍니다.
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
// UserRepository가 자동으로 주입됩니다.
}
Spring MVC에서 웹 요청을 특정 메서드와 매핑하기 위해 사용되는 애노테이션입니다.
@Controller
@RequestMapping("/users")
public class UserController {
@GetMapping("/{id}")
public String getUser(@PathVariable Long id, Model model) {
// GET 요청 처리 로직
return "user";
}
}
@GetMapping("/users/{id}")
public String getUser(@PathVariable Long id) {
// 경로 변수 id를 받아서 처리
return "user";
}
@Controller와 @ResponseBody를 합친 역할을 합니다.@RestController
public class ApiController {
@GetMapping("/api/user")
public User getUser() {
return new User(); // JSON으로 반환됩니다.
}
}
JPA에서 데이터베이스와 매핑할 엔티티 클래스를 정의할 때 사용하는 애노테이션입니다.
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
}
@Transactional은 트랜잭션 관리를 위해 사용됩니다. 메서드 또는 클래스에 적용되며, 해당 메서드가 실행되는 동안 트랜잭션을 시작하고, 성공적으로 완료되면 커밋(commit)하고, 오류가 발생하면 롤백(rollback)합니다.
Spring 애노테이션을 사용하면 코드의 가독성을 높이고, 설정을 간단하게 관리할 수 있습니다. 부트캠프에서 배운 내용 정리하면서 한번 더 이전에 했던 프로젝트 뜯어보면서 다시 확인하는 시간이였습니다.