입문 10

[스프링5 프로그래밍 입문][chap06] 빈 라이프사이클과 범위

1. 컨테이너 초기화와 종료 스프링 컨테이너는 "초기화"와 "종료"라는 라이프 사이클을 가짐 // 1. 컨테이너 초기화 AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(AppContext.class); // 2. 컨테이너에서 빈 객체를 구해서 사용 Greeter g = ctx.getBean("greeter", Greeter.class); String msg = g.greet("스프링"); System.out.println(msg); // 3. 컨테이너 종료 ctx.close(); 초기화 AnnotationConfigApplicationContext 생성자를 이용하여 컨텍스트 객체 생성 이 때 스프링 컨테이너를 ..

책읽기 2022.03.10

[스프링5 프로그래밍 입문][chap05] 컴포넌트 스캔

컴포넌트 스캔 [개요] 자동 주입과 함께 사용하는 추가 기능 [정의] 스프링이 직접 클래스를 검색해서 빈으로 등록해주는 기능 [편의] 설정 클래스에 빈으로 등록하지 않아도 원하는 클래스를 빈으로 등록 가능 [효과] 설정 코드가 크게 줄어듦 1. @Component 애노테이션으로 스캔 대상 지정 @Component 클래스에 붙임 스캔 대상으로 표시 @Component 속성값 빈으로 등록할 때 사용할 이름 @Component("infoPrint") 속성값이 없으면 클래스 이름에서 첫글자를 소문자로 바꾸어 사용 MemberDao -> memberDao 2. @ComponentScan 애노테이션으로 스캔 설정 @ComponentScan @Component를 붙인 클래스를 스프링 빈으로 등록하려면 설정 클래스에 ..

책읽기 2022.03.10

[인프런][스프링 입문] 25~27 강

AOP가 필요한 상황 AOP 적용 다음으로 * 시나리오 - [목표] 모든 메서드의 호출 시간을 측정하고 싶음 - [방안] 각 메서드마다 시간 측정 로직을 추가함 - [참고] 이 때 exception이 발생해도 실행되어야 하기 때문에 finally에 작성 - [문제1] 시간 측정 코드는 핵심 비즈니스 로직이 아니고 공통 관심 사항이므로, 핵심 관심 사항과 공통 관심 사항이 섞여 유지보수가 어려워짐 - [문제2] 시간 측정 로직은 별도 공통 로직으로 만들기 어려움 - [문제3] 시간 측정 로직을 변경하기 어려움 * 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항 (core concern) * AOP (Aspect Oriented Programming) - 공통 관심 사항과 핵심..

[인프런][스프링 입문] 21~24강

스프링 통합 테스트 스프링 JdbcTemplate JPA 스프링 데이터 JPA * Spring boot 테스트 작성법 - [애노테이션] @SpringBootTest, @Transactional 애노테이션이 추가되어야 함 - [참고] 테스트에서 정도는 필드 @Autowired를 사용해도 된다 (편하다) * @SpringBootTest - 스프링 컨테이너와 테스트를 함께 실행 - 진짜 스프링을 띄워서 테스트를 함 * @Transactional - DB 연동 테스트시 테스트 전 상태로 rollback해줌 - afterEach가 필요 없음! - [이유] 트랜잭션을 commit하기 전에 rollback해버림 * 단위 테스트는 필요 없는가? - 스프링 컨테이너를 실행하는 테스트를 통합 테스트라고 함 - 통합 테스트..

[스프링5 프로그래밍 입문][chap04] 의존 자동 주입

1. 예제 프로젝트 의존 자동 주입 의존 대상을 설정코드에서 직접 주입하지 않고, 스프링이 자동으로 객체를 주입하는 기능 의존 주입 관련 애노테이션 @Autowired @Resource : 자바에서 제공하는 애노테이션 2. @Autowired 애노테이션을 이용한 의존 자동 주입 @Autowired 의존을 주입할 대상에 붙이는 애노테이션 필드나 세터 메서드에 붙이면 스프링은 타입이 일치하는 빈 객체를 찾아서 주입 설정 파일에서 사용하기 위해 기본 생성자가 필요 @Bean public MemberDao memberDao() { return new MemberDao(); } 세터 메서드의 자동 주입 구현 과정 기본 생성자를 추가 세터 메서드에 @Autowired 추가 설정 파일에서 기본 생성자로 return ..

책읽기 2022.03.08

[인프런][스프링 입문] 9~12 강

비즈니스 요구사항 정리 회원 도메인과 리포지토리 만들기 회원 리포지토리 테스트 케이스 작성 회원 서비스 개발 https://github.com/pythaac/Spring_tutorial/tree/main/%EC%8A%A4%ED%94%84%EB%A7%81%20%EC%9E%85%EB%AC%B8%20-%20%EC%BD%94%EB%93%9C%EB%A1%9C%20%EB%B0%B0%EC%9A%B0%EB%8A%94%20%EC%8A%A4%ED%94%84%EB%A7%81%20%EB%B6%80%ED%8A%B8%2C%20%EC%9B%B9%20MVC%2C%20DB%20%EC%A0%91%EA%B7%BC%EA%B8%B0%EC%88%A0 GitHub - pythaac/Spring_tutorial: These are test tut..

[인프런][스프링 입문] 5~8 강

빌드하고 실행하기 정적 컨텐츠 MVC와 템플릿 엔진 API https://github.com/pythaac/Spring_tutorial/tree/main/%EC%8A%A4%ED%94%84%EB%A7%81%20%EC%9E%85%EB%AC%B8%20-%20%EC%BD%94%EB%93%9C%EB%A1%9C%20%EB%B0%B0%EC%9A%B0%EB%8A%94%20%EC%8A%A4%ED%94%84%EB%A7%81%20%EB%B6%80%ED%8A%B8%2C%20%EC%9B%B9%20MVC%2C%20DB%20%EC%A0%91%EA%B7%BC%EA%B8%B0%EC%88%A0 GitHub - pythaac/Spring_tutorial: These are test tutorial codes between react na..

[스프링5 프로그래밍 입문][chap01/chap02] 들어가며/스프링 시작하기

https://github.com/pythaac/Spring_tutorial/tree/main/%EC%8A%A4%ED%94%84%EB%A7%815%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%20%EC%9E%85%EB%AC%B8/chap02/src/main/java/com/example/chap02 GitHub - pythaac/Spring_tutorial: These are test tutorial codes between react native(android) and spring boot These are test tutorial codes between react native(android) and spring boot - GitHub - pythaac/Sp..

책읽기 2022.02.04

[인프런][스프링 입문] 1~4 강

강의 소개 프로젝트 생성 라이브러리 살펴보기 View 환경설정 https://github.com/pythaac/Spring_tutorial/tree/main/%EC%8A%A4%ED%94%84%EB%A7%81%20%EC%9E%85%EB%AC%B8%20-%20%EC%BD%94%EB%93%9C%EB%A1%9C%20%EB%B0%B0%EC%9A%B0%EB%8A%94%20%EC%8A%A4%ED%94%84%EB%A7%81%20%EB%B6%80%ED%8A%B8%2C%20%EC%9B%B9%20MVC%2C%20DB%20%EC%A0%91%EA%B7%BC%EA%B8%B0%EC%88%A0 GitHub - pythaac/Spring_tutorial: These are test tutorial codes between react ..