스프링 17

[Spring] 스프링 부트 정리 (우아한 스프링 부트 - 백기선)

https://www.youtube.com/watch?v=z0EaPjF3pCQ&list=WL&index=1 "스프링 부트"가 다루는 영역 1. 빌드 1-1. 프로젝트 생성 1-2. 의존성 관리 1-3. 애플리케이션 패키징 및 실행 2. 코딩 2-1. 개발 툴 제공 2-2. 자동 설정 2-3. 외부 설정 3. 배포 및 관리 3-1. 도커 이미지 생성 3-2. Actuator 3-3. 스프링 부트 어드민 1. 빌드 1-1. 프로젝트 생성 Spring initializr 프로젝트는 특정한 디렉토리 구조를 가지며, 이를 자동으로 생성 Maven / Gradle 선택 Java / Kotiln / Groovy 선택 의존성 자동 추가 패키징 방법 (JAR / WAR) 선택 자바 버전 선택 1-2. 의존성 관리 프로젝..

[EagleEye][서비스구현] Spring boot with K8s

https://pythaac.tistory.com/437 [EagleEye][서비스구현] Spring boot with Docker https://spring.io/guides/gs/spring-boot-docker/ Spring Boot with Docker this guide is designed to get you productive as quickly as possible and using the latest Spring project releases and technique.. pythaac.tistory.com 목표 변경 위 글에서 간단한 서비스를 구현하고 테스트하기로 했었지만, 그보다 더욱더 간단하게 만들어 테스트하기로 함 1차 목표 : Hello world처럼 간단한 서버를 쿠버네티스에 배..

만들기/EagleEye 2022.05.15

[Spring] Actuator

정의 [정의] 애플리케이션의 상태에 대한 종합적인 모니터링 제공 Spring Boot Actuator는 모든 활성화된 endpoint를 HTTP를 통해 노출되도록 자동 설정 기능 앱 모니터링 매트릭 수집 트래픽 이해 데이터베이스 상태 Dependency dependencies { implementation 'org.springframework.boot:spring-boot-starter-actuator' } 노출 정보 추가 management.endpoints.jmx.exposure.include=* management.endpoints.web.exposure.include=* Usage http://localhost:8080/actuator /actuator 이후에 beans, caches, healt..

[EagleEye][서비스구현] Spring boot with Docker

https://spring.io/guides/gs/spring-boot-docker/ Spring Boot with Docker this guide is designed to get you productive as quickly as possible and using the latest Spring project releases and techniques as recommended by the Spring team spring.io 이전 설정들(카프카, 주키퍼, 도커 등등)은 모두 날려버리고, 리눅스 설치 + 도커부터 다시 시작 Containerize Spring application을 구현 - 먼저 branch-service로 테스트 github에서 프로젝트 가져오기 >> git clone https:..

만들기/EagleEye 2022.05.13

[스프링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