본문 바로가기

전체 글140

스프링 핵심원리 기본편 - 싱글톤 컨테이너 인프런 김영한님의 스프링 핵심원리 - 기본편을 학습하고 정리한 내용입니다. 학습 목적의 정리이며, 모든 강의 내용을 정리하진 않습니다. 틀린 부분 지적해주시면 감사하겠습니다. 웹 애플리케이션과 싱글톤 대부분의 스프링 애플리케이션은 웹 애플리케이션이며, 웹 애플리케이션은 보통 여러 고객이 동시에 요청을 하는 구조이다. 그렇다면 수 많은 고객들이 요청할때마다 객체가 생성된다면 메모리 낭비가 심해질 것이다. 예시로 초당 트래픽이 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.
스프링 핵심 원리 기본편 - SOLID란 무엇인가? 인프런 김영한님의 스프링 핵심원리 - 기본편을 학습하고 정리한 내용입니다. 학습 목적의 정리이며 모든 강의 내용을 정리하진 않습니다. 틀린 부분 지적해주시면 감사하겠습니다. 해당 강의에서는 순수 자바로 도메인을 설계하고 구현한다. 앞에 나올 SOLID 원칙을 지키면서 순수 자바로 구현하면, 자연스레 스프링의 원리에 다가가게 된다고 한다. 우선 SOLID 원칙이 무엇인지 알아보자. 역할과 구현 : 운전자 - 자동차 SOLID를 알아보기전에 자동차 역할과 구현에 대해 먼저 공부하면 이해를 도울 수 있다. 위와 같이 자동차의 역할과 그의 구현으로 분리해보자. K3, 아반떼, 테슬라 모델3는 자동차라는 역할을 가지지만 구체적인 구현방식은 제각각 다르다. 어떤 연료를 쓰는지, 어떤 방식으로 작동하는지 디테일한 부.. 2022. 8. 30.
백준 6087번 - 레이저 통신 (Java) https://www.acmicpc.net/problem/6087 6087번: 레이저 통신 크기가 1×1인 정사각형으로 나누어진 W×H 크기의 지도가 있다. 지도의 각 칸은 빈 칸이거나 벽이며, 두 칸은 'C'로 표시되어 있는 칸이다. 'C'로 표시되어 있는 두 칸을 레이저로 통신하기 위해서 www.acmicpc.net 코드 : import java.io.*; import java.util.*; public class Main { static int W; static int H; static int[][] visited; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new .. 2022. 8. 30.