본문 바로가기

전체 글141

스프링 핵심 원리 기본편 - 컴포넌트 스캔 인프런 김영한님의 스프링 핵심원리 - 기본편을 학습하고 정리한 내용입니다. 학습 목적의 정리이며, 모든 강의 내용을 정리하진 않습니다. 틀린 부분 지적해주시면 감사하겠습니다. 컴포넌트 스캔과 의존관계 자동 주입 @ComponentScan 여태 @Bean 또는 XML의 등을 통해서 설정정보에 직접 등록한 스프링 빈을 나열했다. 그런데 서비스가 엄청나게 크다면 일일히 해당 키워드들을 추가해야할 것이다. 스프링은 설정 정보 없이 자동으로 스프링 빈을 등록하는 컴포넌트 스캔 기능을 지원한다. 위와같은 번거로움을 없애준다. @ComponentScan을 클래스에 붙여주면, @Component 어노테이션을 붙인 타입(클래스)들을 빈으로 등록해준다. 여기서 주의할 점은 @Configuration를 붙여준 클래스들도 자.. 2022. 9. 6.
인텔리제이 static import disabled 풀기 맥에서 ⌥ + enter를 사용하면, Show context action이라고 하여 해당 상황에 웬만한 문제를 해결하게 도와준다. JUnit에서 Assertions를 static import해서 많이 사용하곤 한다. 원래는 Assertion에 커서를 두고 ⌥ + enter를 누르면, static import를 할 것인지 물어본다. 그런데 실수로 위 사진처럼 Disabled를 클릭하면 더 이상 메시지가 나오지 않는다. Preference에서 general에서 import 관련 설정을 만져도 안돼서 좀 헤맸다. Preference에 들어가서 static import라고 검색 후, Intentions를 누르면, 다음과 같이 나온다. 해당 밑줄 부분을 체크하면 해결된다. 2022. 9. 6.
스프링 핵심원리 기본편 - 싱글톤 컨테이너 인프런 김영한님의 스프링 핵심원리 - 기본편을 학습하고 정리한 내용입니다. 학습 목적의 정리이며, 모든 강의 내용을 정리하진 않습니다. 틀린 부분 지적해주시면 감사하겠습니다. 웹 애플리케이션과 싱글톤 대부분의 스프링 애플리케이션은 웹 애플리케이션이며, 웹 애플리케이션은 보통 여러 고객이 동시에 요청을 하는 구조이다. 그렇다면 수 많은 고객들이 요청할때마다 객체가 생성된다면 메모리 낭비가 심해질 것이다. 예시로 초당 트래픽이 100이라면, 객체가 100개씩 생성되고 소멸할 것이다. 해결책 : 싱글톤 패턴 그것을 해결하는 방법이 싱글톤 패턴이다. 클래스 인스턴스가 1개만 생성되도록 보장하는 디자인 패턴이다. 수많은 고객들은 하나의 인스턴스를 공유하는 것이다. 싱글톤 컨테이너 스프링 컨테이너는 싱글톤 패턴을 .. 2022. 9. 5.
스프링 핵심원리 기본편 - 스프링 컨테이너와 스프링 빈 인프런 김영한님의 스프링 핵심원리 - 기본편을 학습하고 정리한 내용입니다. 학습 목적의 정리이며 모든 강의 내용을 정리하진 않습니다. 틀린 부분 지적해주시면 감사하겠습니다. 스프링으로 전환 ApplicationContext에서 (@Configuration이 적힌) 구성정보 활용하여 컨테이너 생성 @Configuration : 해당 어노테이션을 달아주면 해당 구성 정보를 사용한다. 해당 강의에서는 AppConfig에 달아줬다. @Bean 이 표시된 메서드들을 모두 호출해서 반환된 객체들을 스프링 컨테이너에 등록 getBean으로 꺼내와서 Service를 사용한다. 스프링 컨테이너 ApplicationContext를 보통 스프링 컨테이너라고 한다. BeanFactory는 그 위에 최상위 클래스인데, 사실 직.. 2022. 9. 2.
백준 1202번 - 보석 도둑 (Java) https://www.acmicpc.net/problem/1202 1202번: 보석 도둑 첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci www.acmicpc.net 코드 : import java.io.*; import java.util.*; class Jewel { int weight; int price; public Jewel(int weight, int price) { this.weight = weight; this.price = price; } } public class Main { publi.. 2022. 9. 2.
스프링 핵심 원리 기본편 - 주문과 할인 도메인 설계, IoC 인프런 김영한님의 스프링 핵심원리 - 기본편을 학습하고 정리한 내용입니다. 학습 목적의 정리로 모든 강의 내용을 정리하진 않습니다. 틀린 부분 지적해주시면 감사하겠습니다. 실제 강의에는 리팩터링 과정이나 세부과정과 좋은 설명들이 많습니다. 강의를 꼭 들어보시길 추천드립니다. 주문 도메인 먼저 위와 같은 설계가 있다. Member객체는 번호, 이름, 등급(id, name, grade)을 가진다. 서비스에서는 들어온 주문을 바탕으로 MemberRepository에 저장된 내용에서 회원등급을 읽어오고, 해당 등급에 따른 할인 정책을 찾아서 적용시킨다. 여기서 주안점은 이전 글에 서술한 SOLID를 지키면서 프로그래밍 하는 것이다. 그래서 인터페이스의 다형성을 활용한다. OrderService를 추상화(인터페이.. 2022. 8. 30.