
싱글톤 패턴 개념에 들어가기 전, 한 웹사이트에 동시에 50000명의 고객이 접속한다고 하자. 앞서 빈 객체에 관해 공부를 했다. 동시에 5만명의 고객이 접속한다고 하면 50000만개의 객체를 동시에 생성해야될까? Configuration 1개가 1개 이상의 객체를 생성할 가능성이 높은데 객체가 최소한 1개씩만 있다고 하더라도 50000개의 객체를 동시에 만들어야 한다. 이것이 가능할까? 스프링이 없는 순수 자바코드를 이용해 빈 설정 정보를 확인하는 테스트 코드를 작성하였다 package hello.core_review.singleton; import hello.core_review.AppConfig; import hello.core_review.member.MemberService; import org..

Spring Container 스프링 컨테이너 ApplicationContext를 스프링 컨테이너라 한다. 이전까지는 개발자가 AppConfig를 사용해서 직접 객체를 생성하고 의존관계 주입하는 순수 자바코드만을 사용했다. 지금부터는 스프링 컨테이너를 사용해 개발해보자 ! 스프링 컨테이너란? 스프링 컨테이너는 자바 객체의 생명 주기를 관리하며, 생성된 자바 객체들에게 추가적인 기능을 제공하는 역할을 한다. 여기서 말하는 자바 객체를 스프링에서는 빈(Bean)이라고 부릅니다. 그리고 IoC와 DI의 원리가 이 스프링 컨테이너에 적용됩니다. 스프링 컨테이너는 Class 상단에 @Configuration이 붙은 AppConfig를 구성 정보로 사용한다. Class 내부에 함수들을 선언하기 전에 @Bean으로 ..

DI(Dependency Injection) DI란 스프링이 제공하는 의존 관계 주입 기능으로, 객체를 직접 생성하는 것이 아닌 외부 APP에서 생성한 후 객체를 주입 시켜주는 방식이다. DI를 통해 모듈 간의 결합도(Coupling)이 낮아지고 유연성이 높아진다. 좋은 소프트웨어를 설계하기 위해서는 응집도(Cohesion)는 높아야 하고 결합도(Coupling)은 낮아야 한다. 방법 1은 A 객체가 B와 C객체를 직접 생성자를 통해서 생성하는 방법이고 방법 2는 외부에서 생성된 객체를 setter()나 생성자를 통해 사용하는 방법이다 주문 시스템의 클래스 다이어그램을 살펴보면 문제점을 찾을 수 있다. 할인 정책을 고정 할인 정책에서 비율 할인 정책으로 변경하는 경우 클라이언트 코드인 OrderServi..

본 게시글은 인프런 강의 스프링 핵심 원리 - 기본편 '강의자료'를 정리한 게시글입니다. 게시글 내용의 출처는 모두 해당 강의에 있습니다. 객체 지향 특징 - 추상화 - 캡슐화 - 상속 - 다형성 => 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만든다 유연하고, 변경에 용이? - 레고 블럭 조립하듯이 - 키보드 마우스 부품 갈아 끼우듯이 - 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법 - 역할과 구현으로 구분하는 것이 중요하다! 역할과 구현을 사물로 비유하기 위해 운전자-자동차 예시를 들어보자 운전자는 운전하는 방법만 알고 있으면, 자동차가 K3이건 아반떼이건 테슬라이건 구분하지 않고 운전할 수 있다. 역할과 구현 분리 역할과 구현으로 구분하면 단순해지고, 유연해지며 변경도 ..

본 게시글은 인프런 강의 스프링 핵심 원리 - 기본편 '강의자료'를 정리한 게시글입니다. 게시글 내용의 출처는 모두 해당 강의에 있습니다. 스프링 프레임워크 핵심 기술 : 스프링 DI 컨테이너, AOP, 이벤트 웹 기술 : 스프링 MVC, 스프링 WebFlux 데이터 접근 기술 : 트랙잭션, JDBC, ORM지원, XML지원 기술 통합 : 캐시, 이메일, 원격접근, 스케줄링 테스트 : 스프링 기반 테스트 지원 언어 : 코트린, 그루비 최근에는 스프링 부트를 통해서 스프링 프레임워크의 기술들을 편리하게 사용 스프링 부트 스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본적으로 사용한다 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 지원 Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치..
본 Spring 관련 게시글은 인프런 강의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 '강의내용'을 정리한 게시글입니다! 게시글 내용의 출처는 모두 해당 강의에 있습니다. 라이브러리 살펴보기 Gradle은 의존관계가 있는 라이브러리를 함께 다운로드 한다. 스프링 부트 라이브러리 spring-boot-starter-web spring-boot-starter-tomcat spring-webmvc : 스프링 웹 MVC spring-boot-starter-thymleaf : 타임리트 템플릿 엔진(view) spring-boot-starter(공통) : 스프링 부트 + 스프링 코어 + 로깅 spring-boot spring-core spring-boot-starter-logging ..

미리 준비할 것 Java 11설치 IDE : IntelliJ or Eclipse 설치 스프링 부트 스타터 사이트로 이동해서 스프링 프로젝트 생성 https://start.spring.io 프로젝트 선택 Project : Gradle Project Spring Boot : 2.5.x Language : Java Packaging : Jar Java : 11 Project Metadata groupId : hello (아무거나 가능) artifactId : hello-spring Dependencies : Spring Web, Thymeleaf 다음과 같이 설정한 후 GENERATE를 누르게 되면 파일이 다운로드 된다. 다운로드 된 파일을 IntelliJ에서 새로운 프로젝트를 열기 [File] -> [Ope..
- Total
- Today
- Yesterday
- jpa
- Spring
- 백준
- 스프링 부트
- 스프링 Logback
- 피움 6주차 회고
- 8주차 회고
- 런칭 페스티벌
- ZNS
- 2차 데모데이
- 알림기능개선기
- 피움
- 회고
- dm-zoned
- 스프링MVC
- 스프링 프레임워크
- dm-zoned 코드분석
- 3차 데모데이
- ZNS SSD
- 프로젝트
- 팀프로젝트
- 파이썬
- 환경 별 로깅 전략 분리
- 5주차 회고
- 우테코
- CI/CD
- java
- 네트워크
- 알림개선기
- 우테코 회고
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |