728x90

Spring 6

Spring - 빈 스코프

- 빈 스코프란? 1. 스코프는 번역 그대로 빈이 존재할 수 있는 범위를 뜻한다. - 싱글톤: 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. - 프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다. - 웹 관련 스코프 1. request: 웹 요청이 들어오고 나갈때 까지 유지되는 스코프이다. 컴포넌트 스캔 자동 등록 @Scope("prototype") @Component public class HelloBean {} 수동 등록 @Scope("prototype") @Bean PrototypeBean HelloBean() { return new HelloBean(); } - 프로토타입 스코..

Programming/Spring 2023.06.11

Spring - 컴포넌트 스캔

- 컴포넌트 스캔과 의존관계 자동 주입 시작하기 1. 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. 2. 또 의존관계도 자동으로 주입하는 @Autowired라는 기능도 제공한다. @Configuration @ComponentScan( excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class) // 예제 코드를 살리기 위해 Configuration를 설정하면 빈이 전부 등록되기 때문에 임시로 제외한다. ) public class AutoAppConfig { } } - @ComponentScan을 설정 정보에 붙여주면 된다. - 기존의 방식..

Programming/Spring 2023.06.10

Spring - 스프링 핵심 원리 이해2 - 객체 지향 원리 적용

- 객체 지향 원리를 그림과 코드를 통해 분석해보려 한다. @Test @DisplayName("VIP는 10% 할인이 적용되어야 한다.") void vip_o() { //given Member member = new Member(1L, "memberVIP", Grade.VIP); //when int discount = discountPolicy.discount(member, 10000); //then assertThat(discount).isEqualTo(1000); } - Test 코드 작성 시 1. given 2. when 3. then 구조를 맞춰서 작성하는 것이 좋다. public class OrderServiceImpl implements OrderService { // private final..

Programming/Spring 2023.06.09

Spring - 스프링 핵심 원리 이해1 - 예제 만들기

- 회원 도메인 설계 - 회원 도메인 요구사항 1. 회원을 가입하고 조회할 수 있다. 2. 회원은 일반과 VIP 두 가지 등급이 있다. 3. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) - 항상 역할과 구현을 분리하여 작성해야 한다. - 모든 클래스는 인터페이스를 바라보게 코드를 작성해야 한다. - 위의 그림에서와 같이 회원 저장소의 역할을 생성하고, 구현 클래스가 해당 인터페이스를 바라보도록 설정한다. 1. 주문 생성: 클라이언트는 주문 서비스에 주문 생성을 요청한다. 2. 회원 조회: 할인을 위해서는 회원 등급이 필요하다. 그래서 주문 서비스는 회원 저장소에서 회원을 조회한다. 3. 할인 적용: 주문 서비스는 회원 등급에 따른 할인 여부를 할인 정책에 위임한..

Programming/Spring 2023.06.09

Spring - MVC 기본 동작 원리

1. 컨트롤러에서 리턴 값으로 문자를 반환하면 viewResolver가 화면을 찾아서 처리한다 2. 스프링 부트 템플릿엔진 기본 viewName 매핑 3. resources:templates/ + (viewName) + .html 1. 웹 브라우저에 요청이 들어오면 톰켓은 스프링 컨테이너에 해당 컨트롤러를 우선 찾아보고 없으면 resources에 있는 정적 파일을 찾아서 요청에 대한 응답을 보낸다. - Controller @Controller public class HelloController { @GetMapping("hello-mvc") public String helloMvc(@RequestParam("name") String name, Model model) { model.addAttribute(..

Programming/Spring 2023.06.05

Spring - JDBC

* 프로젝트 생성 시 JAVA EE 8에는 Tomcat 9 버전을 사용해야 한다. - JDBC 프로그램의 구조 1. 자바 프로그램과 데이터베이스를 네트워크 상에서 연결해 데이터를 교환하는 프로그램으로 관련 API는 java.sql 패키지와 java.sql 패키지를 이용한다. - JDBC 프로그램 작성 순서 1. 네트워크를 통해서 데이터베이스와 연결을 맺는 단계 2. 데이터베이스에 보낼 SQL을 작성하고 전송하는 단계 3. 필요하다면 데이터베이스가 보낸 결과를 받아서 처리하는 단계 4. 데이터베이스와 연결을 종료하는 단계 - JDBC 프로그래밍에서 가장 중요한 사실 중 하나는 'Connection은 반드시 close()해야 한다' - java.sql.PreparedStatement 1. JDBC에서 SQL..

Programming/Spring 2023.05.25
728x90