TIL
103
Java EcoTILSpring Framework
스프링5; AOP의 실제 #1
스프링에서 프록시 패턴을 어떻게 적용시키는지 실제로 스프링을 통해 적용해본다. proxy 패턴은 decorator 객체 로도 활용할 수 있다. 기능 추가와 확장에 초점이 맞춰져있다. 프록시의 특징은 핵심 기능은 구현하지 않는다는 점이다. 프록시는 핵심 기능을 구현하지 않는 대신 여러 객체에 공통으로 적용할 수 있는 기능을 구현한다. AOP의 기본 핵심은 공통 기능을 삽입하는 것 이다. 공통 관심 기능을 핵심 로직에 적용하는 시점을 정의한다. ex) 메소드를 호출하기 전에 트랜잭션을 시작하는 기능을 적용한다. Advice를 적용하는
BlogTILThink
2021 1/4 중간점검 part1
커리큘럼 중간 점검 의식의 흐름대로 대화 정리 초보 개발자를 위한 스프링5 입문 가메출판사 스프링5의 코어 부분은 거의 마무리 됐음 (DI, Bean, AOP, Component scan, 자동 주입..) 스프링 DB나 MVC는 설정 지옥임. 특히 DB는 지금 봐도 이해도 안 될 것임. 그래서 스프링 부트로 넘어가서 속도를 내는 것을 추천함 김영한 스프링 입문 말랑말랑해서 스프링 부트에 대해 훑어보기 괜찮음 백기선 스프링 ? → 내용은 좋으나 지금 레벨에선 너무 딮 다이브임 (중급) 김영한 입문을 가볍게 보고 → 스프링 부트 시작하
FundamentalTILAlgorithm
알고리즘; 해싱 #2, 스택, 정렬
2월 4일 목요일 알고리즘 스터디에서 진행한 프로그래머스 문제 풀이다. 브레인스토밍과 채점이 끝나고 다른사람의 코드 보기를 보면 파이써닉한 코드가 많은데 그렇게까지 해야 할 필요가 있나 싶다.. 같은 카테고리로 dictionary를 만든다 dictionary key의 길이를 구한다 (총 카테고리의 개수) n개의 카테고리중 1개만 입는 경우를 구한다 → 각 카테고리의 원소 개수를 전부 합한다. 2~n개 까지는 combinations 함수를 통해 구한다 → 각 카테고리 원소 개수를 곱한다. 3과 4에서 구한 경우의 수를 모두 합한다.
Java EcoTILSpring Framework
스프링5; Prototype 범위
스프링 컨테이너는 기본적으로 bean객체를 생성 할 떄 싱글톤으로 생성한다. 그러나 여러개의 인스턴스가 필요한 경우 prototype으로 scope를 지정하면 된다. bean설정에서 scope에 속성으로 지정하면 된다. 아래 코드 참고. 그리고 아래 코드를 실행 하면 false가 반환된다. 프로토타입 범위를 갖는 bean은 완전한 라이프사이클을 따르지 ㅇ낳는다. 컨테이너 생성시 초기화 작업까지는 하지만 컨테이너 를 소멸하는 close() 작업시 bean객체의 destroy()를 실행하지 않는다. 그래서 프로토타입 bean을 사용할때
Java EcoTILSpring Framework
스프링5; Bean 라이프사이클
스프링 컨테이너를 초기화하고 종료할 때는 다음 작업을 수행한다. 컨테이너 초기화 → bean 객체의 생성, 의존 주입, 초기화 컨테이너 종료 → bean 객체의 소멸 bean객체가 생성 된 뒤 InitializingBean 클래스의 afterPropertiesSet() 메소드가 호출된다. 초기화 직후 필요한 작업이 있다면 이 클래스를 구현하면 된다. bean객체가 소멸할때 close()로 호출하는데 이 호출되는 과정에서 DisposableBean 클래스의 destroy()가 호출된다. 소멸 과정에서 필요한 작업이 있다면 이 클래스를
Java EcoTILSpring Framework
스프링5; 컴포넌트 스캔
자동 주입과 함께 사용하는 추가 기능이 component scan이다. 스프링이 직접 클래스를 검색해서 bean으로 등록해주는 기능이다. bean 설정에 등록하지 않아도 원하는 클래스를 bean으로 등록할 수 있어 component scan을 사용하면 bean 설정 코드가 많이 줄어든다. 서비스 코드에 붙인다 이렇게 되면 bean이름은 "memberDao"로 자동지정된다. 자동 지정 규칙은 camelCase다. 아래와 같이 속성을 줄 수 있다 속성을 지정하면 해당 이름으로 변경된다. bean 설정 코드에 아래와 같이 추가한다 컴포넌
Java EcoTILSpring Framework
스프링5; 의존 자동 주입 @Autowired
서비스 코드에서 의존주입 받는 객체에 대해 다음과 같이 선언하면 스프링이 bean객체를 직접 찾아서 할당한다 bean 설정에서 의존 주입부분을 삭제하더라도 직접 넣는다 메소드에도 역시 붙이는게 가능하다. setter에 붙인다면 좀 더 명확할 것 같다는 생각을 해본다. 마찬가지로 bean 설정에서 의존부분을 지울 수 있다. 자동 주입이 가능한 bean이 두개 이상이면 자동 주입할 bean을 지정할 수 있도록 대상을 한정한다. 서비스 코드와 bean 설정에서 어노테이션을 붙여주면 된다. @Qualifier가 지정되지 않은 bean은 메
Java EcoTILSpring Framework
스프링5; DI의 실제
서비스 객체가 있을때 비즈니스 로직을 처리하는 경우 저장소의 객체를 직접 들여다 볼 수 있다. 위와 같은 코드가 있을때 서비스 객체를 생성한다면 자연스럽게 저장소 객체도 생성된다. 이 경우를 두고 '서비스가 저장소에 의존된다'라고 말한다. 의존경우가 있을 경우엔 어떤 일이 생길까? 위와같이 모든 서비스 코드에서 의존관계가 종속된다면 의존에 관련된 코드를 수정 할 때 마다 서비스코드도 전부 수정해야한다. 생성자를 통해 객체를 받아서 처리하면 의존관계를 해결할 수 있다. 스프링의 DI는 여러가지 방법이 있는데 크게 3가지만 아래 정리해