Spring Annotation은 스프링 프레임워크에서 제공하는 주석 기반의 메타데이터입니다. 주석을 통해 클래스, 메서드, 필드 등에 특정한 의미와 동작을 부여하여 스프링이 해당 요소들을 인식하고 처리할 수 있게 합니다.
@Controller: 스프링 MVC에서 컨트롤러 역할을 하는 클래스에 부여하는 어노테이션입니다. HTTP 요청을 처리하고 응답을 반환하는 역할을 수행합니다.
@RestController: @Controller와 유사하지만, RESTful 웹 서비스의 엔드포인트를 처리하기 위한 어노테이션입니다. 주로 JSON 형태의 데이터를 반환합니다.
@RequestMapping: 요청 URL과 메서드를 매핑하는 어노테이션으로, 컨트롤러의 특정 메서드가 어떤 URL 요청을 처리해야 하는지를 지정합니다.
@Autowired: 의존성 주입(Dependency Injection)을 위해 사용되는 어노테이션입니다. 해당 필드, 생성자, 메서드 등에 사용하여 스프링이 자동으로 의존하는 객체를 주입합니다.
@Service: 비즈니스 로직을 처리하는 서비스 클래스에 부여하는 어노테이션입니다. 주로 서비스 계층에서 사용되며, 해당 클래스를 스프링 빈으로 등록합니다.
@Repository: 데이터베이스와 관련된 작업을 처리하는 DAO(Data Access Object) 클래스에 부여하는 어노테이션입니다. 데이터베이스 관련 예외를 스프링의 일반적인 예외로 변환해줍니다.
@Component: 일반적인 스프링 빈으로 등록하기 위해 사용되는 어노테이션입니다. 주로 재사용 가능한 컴포넌트에 부여합니다.
@Configuration: 스프링 설정 클래스를 나타내는 어노테이션입니다. 해당 클래스에서는 빈 정의, 프로퍼티 설정 등을 할 수 있습니다.
@Value: 프로퍼티 값을 주입받는 어노테이션으로, 주로 설정 파일에 정의된 값을 필드에 주입받을 때 사용합니다.
@Transactional: 트랜잭션 처리를 위해 사용되는 어노테이션입니다. 해당 메서드 또는 클래스의 메서드들을 하나의 트랜잭션으로 묶어줍니다.
@Aspect: 스프링 AOP(Aspect-Oriented Programming)에서 사용되는 어노테이션으로, 횡단 관심사(Cross-cutting Concern)를 모듈화하고 핵심 비즈니스 로직과 분리하여 적용할 수 있게 해줍니다.
PSA는 "서비스 추상화(Service Abstraction)"의 약어로, 스프링 프레임워크에서 제공하는 서비스 레이어의 추상화 계층을 의미합니다. PSA는 스프링의 핵심 개념 중 하나로, 서로 다른 기술과 플랫폼에서 동일한 방식으로 서비스를 사용할 수 있도록 해줍니다. PSA는 다음과 같은 핵심 인터페이스들을 제공합니다.
JdbcTemplate: JDBC를 사용하여 데이터베이스에 접근하는 기능을 제공하는 인터페이스입니다.
JmsTemplate: JMS(Java Message Service)를 사용하여 메시지를 송수신하는 기능을 제공하는 인터페이스입니다.
RestTemplate: HTTP를 통해 다른 서비스와 통신하는 기능을 제공하는 인터페이스입니다.
RedisTemplate: Redis를 사용하여 데이터를 캐싱하거나 분산 락 등을 처리하는 기능을 제공하는 인터페이스입니다.