3계층 아키텍처는 애플리케이션을 3개의 논리적 및 물리적 컴퓨팅 계층으로 구성하는 잘 정립된 소프트웨어 애플리케이션입니다.
프리젠테이션 계층 또는 사용자 인터페이스, 데이터가 처리되는 애플리케이션 계층, 그리고 애플리케이션과 연관된 데이터가 저장 및 관리되는 데이터 계층으로 나눌 수 있습니다.
IBM Cloud Education
소프트웨어 코드를 구성하는데 널리 사용되는 아키텍쳐!
3계층 구조에 따르면 코드는 고유한 책임을 가진 세가지 레이어로 분리된다
스프링 3계층 어노테이션은 모두 @Component의 일종임
@Component : 클래스에 대해 빈을 등록할 때 사용하는 도구
@RestController
public class ProductController {
private final ProductService productService;
@Autowired
public ProductController(ProductService productService) {
this.productService = productService;
}
@PostMapping("/api/products")
public Product createProduct(@RequestBody ProductRequestDto requestDto) throws SQLException {
//ProductService productService = new ProductService();
Product product = productService.createProduct(requestDto);
return product;
}
}
@Service
public class ProductService {
private final ProductRepository productRepository;
@Autowired
public ProductService(ProductRepository productRepository) {
this.productRepository = productRepository;
}
public Product createProduct(ProductRequestDto requestDto) throws SQLException {
Product product = new Product(requestDto);
productRepository.save(product);
return product;
}
}
public interface ProductRepository extends JpaRepository<Product, Long> {
}