본문 바로가기

전체 글45

[Spring] 빈 생명주기 콜백 데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 지점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다. ublic class NetworkClient { private String url; public void setUrl(String url) { this.url = url; } public NetworkClient() { System.out.println("생성자 호출, url = " + url); connect(); call("초기화 연결 메시지"); } //서비스 시작시 호출 public void connect() { System.out.println("connect: " + url); } publ.. 2021. 12. 23.
[Spring] 의존관계 자동 주입 (3) 애노테이션 직접 만들기 @Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @Inherited @Documented @Qualifier("MainDiscountPolicy") public @interface MainDiscountPolicy { } //---------------------------- @Component @MainDiscountPolicy public class RateDiscountPolicy implements DiscountPolicy { //---------.. 2021. 12. 22.
[Spring] 의존관계 자동 주입 (2) 롬복과 최신 트랜드 롬복 라이브러리 설치 스프링 세팅단계의 start.spring.io에서 lombok 라이브러리를 추가하고 받아도 됨 롬복의 대표적인 기능 @Getter, @Setter 애노테이션 (Getter Setter 자동 완성) package hello.core; import lombok.Getter; import lombok.Setter; @Getter @Setter public class HelloLombok { private String name; private String age; public static void main(String[] args) { HelloLombok helloLombok = new HelloLombok(); helloLombok.setName("aa"); Stri.. 2021. 12. 22.
[Spring] 의존관계 자동 주입 (1) 의존관계 주입 방법 생성자 주입 생성자를 통해 의존관계를 주입하는 방식 생성자 호출 시점에 딱 1번만 호출되는 것이 보장됨 불변, 필수 의존관계에 사용 생성자가 1개 있다면 @Autowired 수정이 가능함 (2개 있을 경우 @Autowired 필수) @Component public class MemberServiceImpl implements MemberService { private final MemberRepository memberRepository; @Autowired public MemberServiceImpl(MemberRepository memberRepository) { this.memberRepository = memberRepository; } 수정자 주입 setter라 불리는 필드의.. 2021. 12. 22.
[Spring] 컴포넌트 스캔 컴포넌트 스캔과 의존 관계 자동주입 컴포넌트 스캔은 스프링 빈을 스캔해서 스프링 기능을 실행하는것 @Configuration @ComponentScan( excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class) // 다른 Configuration이 등록되면 안되기 때문에 등록 (@Configuration일 경우 자동 스캔) // 실무에서 exclude는 잘 안씀 ) public class AutoAppConfig { } @Component public class MemberServiceImpl implements MemberService { private final MemberRepo.. 2021. 12. 21.
Heap Heap이란 최대값이나 최솟값을 찾아내는 연산을 빠르게 하기 위해 고안된 완전이진트리를 기본으로 한 자료구조 최소힙이란? 작은 값을 항상 위에 있게하여 트리의 루트에는 가장 작은값이 오도록 함. 최대힙이란? 큰값을 항상 위에 있게하여 트리의 루트에 가장 큰 값이 오도록 함. 최소힙에 노드 삽입하기 완전 이진트리에 값을 추가 하듯이 마지막 leaf에 값을 추가 추가한값과 부모노드를 비교해서 자기보다 값이 작은 경우 자리 변경 루트에 도착하거나 자기보다 값이 작은 부모를 만나기 전까지 반복 최소힙은 부모노드와 비교할때마다 전체 값의 절반이 사라지기 때문에 O(log n)의 시간 복잡도를 가진다 최소힙에서 노드 꺼내오기 최소힙에 최솟값을 요청할때 루트의 값을 빼온 다음에는 마지막 하위 노드의 값을 가져와 루트.. 2021. 12. 18.
[프로그래머스] 주식가격 문제 설명 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한 사항 prices의 각 가격은 1 이상 10,000 이하인 자연수입니다. prices의 길이는 2 이상 100,000 이하입니다. 입출력 예pricesreturn [1, 2, 3, 2, 3] [4, 3, 1, 1, 0] 입출력 예 설명 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다. 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다. 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다. 4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다. 5초 시점의 ₩3은 .. 2021. 12. 18.
[프로그래머스] 다리를 지나는 트럭 문제 설명 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 수 있으며, 다리는 weight 이하까지의 무게를 견딜 수 있습니다. 단, 다리에 완전히 오르지 않은 트럭의 무게는 무시합니다. 예를 들어, 트럭 2대가 올라갈 수 있고 무게를 10kg까지 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다. 경과 시간다리를 지난 트럭다리를 건너는 트럭대기 트럭 0 [] [] [7,4,5,6] 1~2 [] [7] [4,5,6] 3 [7] [4] [5,6] 4 [7] [4,5] [.. 2021. 12. 18.
[Spring] @Configuration과 싱글톤 memberRepository() -> new MemoryMemberRespository 객체를 새로 생성하는 메서드 1. memberService() -> memberRepository -> new MemoryMemberRespository 사용 2. orderService ()-> memberRepository -> new MemoryMemberRespository 사용 1번에서 사용되는 MemoryMemberRespository와 2번에서 사용된 MemoryMemberRespository는 서로 다른 객체이지 않을까? (둘다 메서드를 사용할 때 new 키워드로 새로 생성되기 때문에) 만약 다른 객체라면 싱글톤 패턴에 위배되는 현상! [테스트 결과] @Test void configurationTest.. 2021. 12. 17.