목록JAVA/스프링 (12)
개발 기록
https://prohannah.tistory.com/82 Springboot 개인정보 암복호화 저장 (4) 암복호화 시점과 주체 선정 - JPA AttributeConverter 개인정보 암복호화 시점과 주체에 대해 어떤 고민을 하였는 지 공유하겠다. 다른 방법들도 많겠으나 나는 세 가지 후보에 대해서 고려하였고, JPA AttributeConverter를 사용하기로 결정했다. 이를 어 prohannah.tistory.com
https://stackoverflow.com/questions/51014320/spring-type-definition-error-when-posting-a-new-object-using-a-rest-\service
기록은 어렵다.. 간단하게라도 정리 강의 수강 목적 : 실무에서는 아무래도 기존 코드에 맞춰 개발을 하다보니 뭐가뭔지 생각하는게 덜 해졌다고 느껴졌다. 예외처리도 그 중 하나인데 다른 메소드에서 쓰이는 걸 그냥 그대로 가져와 쓰다가 어느 날은 알고는 써야지 하고 생각이 들었다. 그래서 예외처리에 관한 강의를 찾다가 수강 ! - 강의는 JDBC부터 데이터 소스 트랜젝션 예외 많지만 나는 예외처리때문에 들었으므로 정리도 그 부분만 하겠다! - 예외 기본 문법이라는 내용도 나는 모르고 있어서 듣길 잘 했다고 생각이 들었다. 내용 정리 예외 계층 체크 예외와 언체크 예외 차이는 컴파일러의 체크 유무 + 컴파일러란 - 소스를 컴퓨터 언어인 기계어로 번역하는 작업(컴파일)을 하는 프로그램 + 빌드 = 컴파일 + 링..
스코프-빈이 존재할 수 있는 범위 스코프 종류 싱글톤 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프 프로토타입 : 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입, 초기화까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프 ( 종료 메서드 호출 x ) 스프링 컨테이너에 요청할때 마다 새로 생성 ( 빈을 조회할 때 생성되고 초기화 메서드도 실행 ) 웹 관련 스코프( 웹 환경에서만 동작 / 스코프의 종료 시점까지 관리 ) request : 웹 요청이 들어오고 나갈때 까지 유지 session : 웹 세션이 생성되고 종료될 때까지 유지 application : 웹의 서블릿 컨텍스와 같은 범위로 유지 프로토타입과 싱글톤 함께 사용시 발생하는 문제 - 싱글톤 빈..
스프링 빈의 이벤트 라이프 사이클 (싱글톤의 경우) 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용(애플리케이션 동작) -> 소멸전 콜백 -> 스프링 종료 *스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해 초기화 시점을 알려주는 기능 제공 *방법은 여러가지이지만 애노테이션을 주로 사용 //의존관계 주입 완료 후 실행 메소드 @PostConstruct public void init() { connect(); call("초기화 연결 메세지"); } //컨테이너 종료시 호출 @PreDestroy public void close() { disconnect(); } * 객체 생성시 생성자에서 처리하면 되지 않을까?! ( 의존관계 주입을 다 생성자 주입..
동적으로 빈을 선택해야 할때 map이나 list으로 받아서 사용하면 편리함 @RequiredArgsConstructor static class DiscountService { private final Map policyMap; private final List policies; public int discount(Member member, int price, String discountCode) { DiscountPolicy discountPolicy = policyMap.get(discountCode); return discountPolicy.discount(member, price); } } ex ; 가격 정책 두 가지를 고객이 선택해서 사용할 수 있을때 map 에 다 넣어서 선택한 정책을 받아와 그..
생성자 주입 -생성자 호출시점에 딱 1번만 호출되는 것이 보장 -불변, 필수 의존관계에 사용 수정자 주입 -setter 메서드를 통해 의존관계 주입 -선택, 변경 가능성이 있는 의존관계에서 사용 private MemberRepository memberRepository; private DiscountPolicy discountPolicy; @Autowired public void setMemberRepository(MemberRepository memberRepository) { this.memberRepository = memberRepository; } @Autowired public void setDiscountPolicy(DiscountPolicy discountPolicy) { this.disc..
싱글톤 패턴 -클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴 -그래서 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야 한다 : private 생성자를 사용해서 외부에서 임의로 new 키워드를 사용하지 못하도록 막아야 한다 싱글톤 컨테이너 -스프링 컨테이너는 싱글톤 패턴을 적용하지 않아도, 객체 인스턴스를 싱글톤으로 관리 -이미 만들어진 객체를 공유해서 효율적으로 재사용 스프링 컨테이너는 싱글톤 레지스트리 - 스프링 빈이 싱글톤이 되도록 보장 스프링은 클래스의 바이트코드를 조작하는 라이브러리를 사용 @Configuration을 붙이면 바이트코드를 조작하는 CGLIB 기술을 사용해서 싱글톤 보장 출처 인프런 스프링 핵심 원리 - 기본편