Back End/Spring53 [Spring] Spring MVC의 @ModelAttribute 어노테이션 @ModelAttribute는 스프링 프레임워크에서 사용되는 어노테이션(Annotation) 중 하나이다. 스프링은 MVC(Model-View-Controller) 아키텍처를 기반으로 하는 웹 애플리케이션을 개발할 때 자주 사용된다. @ModelAttribute 어노테이션은 주로 컨트롤러 클래스의 메서드에서 파라미터와 모델 속성을 바인딩할 때 사용된다. 이 어노테이션을 사용하면 해당 메서드가 호출될 때 모델에 데이터를 바인딩하여 뷰로 전달할 수 있다. @ModelAttribute가 @GetMapping함수에 파라미터로 들어갈때 여기서 @ModelAttribute는 해당 파라미터와 모델 속성을 바인딩하는 역할을 수행한다. 이는 주로 웹 요청의 데이터를 컨트롤러로 전달하거나, 컨트롤러에서 뷰로 데이터를 전달.. 2023. 7. 31. [Spring] 간단한 쇼핑몰 예제 도메인 설계 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 기타 요구사항 상품의 재고 관리 상품 종류로는 도서, 음반, 영화 (카테고리) 상품 주문시 배송 정보 입력 도메인 모델과 테이블 설계 회원, 주문, 상품의 관계 : 회원은 여러 상품 주문 가능 (주문 ↔️ 상품 다대다 관계) 하지만 다대다 관계는 관계형 데이터베이스와 엔티티에서 거의 사용하지 않는다. 위 그림처럼 주문 상품이라는 엔티티를 추가해서 일대다, 다대일 관계로 풀어낸다. 상품 분류 : 도서, 음반, 영화는 상품이라는 공통 속성을 사용하므로 상속 구조로 표현한다. 회원(Member): 이름과 임베디드 타입인 주소(Address), 그리고 주문(orders) 리스트.. 2023. 7. 23. Spring - 빈 스코프 빈 스코프란 ? 스프링 빈이 스프링 컨테이너의 시작과 함께 생성되어서 스프링 컨테이너가 종료될 때 까지 유지된다고 학습했다. 이는 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문이다. 스코프는 빈이 존재할 수 있는 범위를 뜻한다. 스프링은 다음과 같은 다양한 스코프를 지원한다. 싱글톤 :기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. 프로토타입 :스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다. 웹 관련 스코프 : request: 웹 요청이 들어오고 나갈때 까지 유지되는 스코프이다. session: 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프이다. application: 웹의 서블릿 .. 2023. 7. 17. Spring - 빈 생명주기 콜백 데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다. 스프링 빈은 간단하게 다음과 같은 라이프사이클을 가진다. 객체 생성 ➡️ 의존관계 주입 스프링 빈은 객체를 생성하고, 의존관계 주입이 다 끝난 다음에야 필요한 데이터를 사용할 수 있는 준비가 완료된다. 따라서 초기화 작업은 의존관계 주입이 모두 완료되고 난 다음에 호출해야 한다. 그런데 개발자가 의존관계 주입이 모두 완료된 시점을 어떻게 알 수 있을까? 스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해서 초기화 시점을 알려주는 다양한 기능을 제공한다. 또한 스프링은 스프링 컨테이너가 .. 2023. 7. 16. Spring - 자동과 수동 주입의 올바른 운영 기준 자동 주입 기능 매우 편리하다. 그러면 어떤 경우에 컴포넌트 스캔과 자동 주입을 사용하고, 어떤 경우에 설정 정보를 통해서 수동으로 빈을 등록하고, 의존관계도 수동으로 주입해야 할까? 스프링은 @Component 뿐만 아니라 @Controller , @Service , @Repository 처럼 계층에 맞추어 일반적인 애플리케이션 로직을 자동으로 스캔할 수 있도록 지원한다. 거기에 더해서 최근 스프링 부트는 컴포넌트 스캔을 기본으로 사용하고, 스프링 부트의 다양한 스프링 빈들도 조건이 맞으면 자동으로 등록하도록 설계했다. 설정 정보를 기반으로 애플리케이션을 구성하는 부분과 실제 동작하는 부분을 명확하게 나누는것이 이상적이지만, 개발하는 입장에서 스프링 빈을 하나 등록할때 @Component만 넣어주면 끝.. 2023. 7. 16. Spring - 조회한 빈이 모두 필요할때는 List와 Map 사용 의도적으로 정말 해당 타입의 스프링 빈이 다 필요한 경우도 있다. 예를 들어서 할인 서비스를 제공하는데, 클라이언트가 할인의 종류(rate, fix)를 선택할 수 있다고 가정해보 자. 스프링을 사용하면 소위 말하는 전략 패턴을 매우 간단하게 구현할 수 있다. public class AllBeanTest { @Test void findAllBean(){ ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class, DiscountService.class); DiscountService discountService = ac.getBean(DiscountService.class); Member member = new Mem.. 2023. 7. 16. 이전 1 2 3 4 5 ··· 9 다음