본문 바로가기

전체 글60

[Spring] 스프링 핵심 원리 - 기본편 (8) 이전 글 [Spring] 스프링 핵심 원리 - 기본편(7) 빈 생명주기 콜백 빈 생명주기 콜백 시작 DB 커넥션 풀, 네트워크 소켓 등 애플리케이션 시작 시점에 필요 연결을 미리 해두고, 종료 시점에 연결을 종료를 진행하려면, 객체의 초기화와 종료 작업이 필요하다. 스프링 빈의 라이프 사이클 객체 생성 -> 의존관계 주입 초기화 작업은 의존관계 주입이 모두 완료되고 난 다음에 호출 필요 스프링은 의존관계 주입이 완료되면 스프링 빈에 콜백 메서드를 통해 초기화 시점을 알려주는 다양한 기능 제공 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 준다. 스프링 빈의 이벤트 라이프사이클 스프링 시작 -> 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸전 콜백 .. 2023. 3. 31.
[Spring] 스프링 핵심 원리 - 기본편 (7) 이전 글 [Spring] 스프링 핵심 원리 - 기본편 (6) 의존관계 자동 주입 다양한 의존관계 주입 방법 생성자 주입 - 생성자 호출시점에 1회 호출 보장 - 불변, 필수 의존관계에 사용 - @Autowired(생성자가 딱 하나만 있으면 @Autowired 생략해도 자동 주입 - spring bean인 경우) 수정자 주입 - setter에 Autowired 적용 - 선택(required=false), 변경 의존관계에 사용 필드 주입 - @Autowired private MemberRepository memberRepository; - 외부에서 변경 불가능 -> setter 만들어야함 - 안쓰는게 좋으나 @Configuration 혹은 테스트 과정 중에는 가능 일반 메서드 주입 - 일반 메서드를 통해 주.. 2023. 3. 23.
[Python] json의 key, value에 따른 데이터 추출 json에서 key값이 실제 값인 경우 user_list = { "user1": { "key1" : "Y", "key2" : "Y" }, "user2": { "key1" : "N", "key2" : "Y" }, "user3": { "key1" : "N", "key2" : "N" } } key만 필요한 경우 list = data.keys() # dict_keys(["user1","user2","user3"]) list = [user for user in data] # ["user1","user2","user3"] value만 필요한 경우 list = [data.get(user) for user in data] ''' [ { "key1" : "Y", "key2" : "Y" }, { "key1" : "N", .. 2023. 3. 10.
[Spring] 스프링 핵심 원리 - 기본편 (6) 이전 글 [Spring] 스프링 핵심 원리 - 기본편 (5) 컴포넌트 스캔 컴포넌트 스캔과 의존관계 자동 주입 시작하기 @ComponentScan을 붙여주면 컴포넌트 스캔 가능 @Configuration도 @Component가 붙기 때문에 자동 등록된다. excludeFilters를 이용하여 Annotation 타입이 Configuration인 것들을 제거한다. @Autowired를 사용하면 자동 매핑된다. -> default로 타입이 같은 빈을 주입한다. @Component 동작 과정 @Autowired 동작 과정 각 구현 클래스에 @Component, @Autowired annotation 추가 후 아래와 같은 Configuration 파일 작성시 동작 가능 import org.springframew.. 2023. 3. 7.
[Spring] 스프링 핵심 원리 - 기본편 (5) 이전 글 [Spring] 스프링 핵심 원리 - 기본편 (4) 싱글톤 컨테이너 웹 애플리케이션과 싱글톤 스프링은 온라인 서비스 기술을 지원하기 위해 탄생 순수 DI 컨테이너는 AppConfig 요청마다 객체를 새로 생성한다. -> 해당 객체를 1개만 생성 후 공유하도록 설계한다. (싱글톤 패턴) import hello.core.AppConfig; import hello.core.member.MemberService; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; public class SingletonTest { @Test @DisplayName.. 2023. 3. 5.
[Spring] 스프링 핵심 원리 - 기본편 (4) 이전 글 [Spring] 스프링 핵심 원리 - 기본편 (3) 스프링 컨테이너와 스프링 빈 스프링 컨테이너 생성 ApplicationContext = 스프링 컨테이너, 인터페이스 스프링 컨테이너는 xml, 혹은 annotation 기반 자바 설정 클래스 AnnotationConfigApplicationContext는 ApplicationContext의 인터페이스 구현체 스프링 빈의 이름은 메소드 이름 사용, 직접 부여도 가능(유니크하도록) 빈 생성 후 의존 관계 주입 컨테이너에 등록된 모든 빈 조회 applicationContext에서 getBean을 사용하여 확인 BeanDefinition에서 역할별 bean 확인 가능 import hello.core.AppConfig; import org.junit.j.. 2023. 2. 11.
[Spring] 스프링 핵심 원리 - 기본편 (3) 이전 글 [Spring] 스프링 핵심 원리 - 기본편 (2) 스프링의 핵심 원리 이해2 - 객체 지향 원리 적용 1. 새로운 할인 정책 개발 추가 할인 정책 추가 RateDiscountPolicy, RateDiscountPolicyTest 파일 작성 import hello.core.member.Grade; import hello.core.member.Member; public class RateDiscountPolicy implements DiscountPolicy{ private int discountPercent = 10; @Override public int discount(Member member, int price) { if(member.getGrade() == Grade.VIP){ return.. 2023. 1. 28.
[Python] Requests timeout 설정 request 모듈을 사용하여 get, post method를 사용하는 예시 코드는 아래와 같다. url = 'https://www.tistory.com/api/get/url' r = requests.get(url) url = 'https://www.tistory.com/api/post/url' data = {'key': 'value'} r = requests.post(url, json = data) 추가로 각 request에 timeout 설정을 하려면 파라미터로 (timeout = n)을 추가한다. (sec) url = 'https://www.tistory.com/api/post/url' data = {'key':'value'} r = requests.post(url, json=data, timeou.. 2023. 1. 27.
[Java] MacOS + JDK 변경 terminal 실행 후 현재 버전을 확인한다. java -version 현재 맥에 설치되어 있는 버전들을 확인한다. /usr/libexec/java_home -v 설치되어 있는 JDK 중 원하는 버전을 선택 후 변경한다. (18.0.1.1 -> 11.0.15) 메이저 버전까지만 작성해도 된다. export JAVA_HOME=$(/usr/libexec/java_home -v 11) 2023. 1. 24.
반응형