Back-end Skill/Springboot 21

스프링 세션5_ 싱글톤 컨테이너

@Test @DisplayName("싱글톤 패턴을 적용한 객체 사용") public void singletonServiceTest() { //private으로 생성자를 막아두었다. 컴파일 오류가 발생한다. //new SingletonService(); //1. 조회: 호출할 때 마다 같은 객체를 반환 SingletonService singletonService1 = SingletonService.getInstance(); //2. 조회: 호출할 때 마다 같은 객체를 반환 SingletonService singletonService2 = SingletonService.getInstance(); //참조값이 같은 것을 확인 System.out.println("singletonService1 = " + sin..

스프링 세션4_스프링 컨테이너와 스프링 빈 정리본

스프링 컨테이너 생성되는 과정 //스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext 를 스프링 컨테이너 ApplicationContext 는 인터페이스이다. 스프링 컨테이너는 XML을 기반으로 만들 수 있음, 애노테이션 기반의 자바 설정 클래스로 만들 수 있음. 직전에 AppConfig 를 사용했던 방식이 애노테이션 기반의 자바 설정 클래스로 스프링 컨테이너를 만듬. 자바 설정 클래스를 기반으로 스프링 컨테이너( ApplicationContext )를 만들면 new AnnotationConfigApplicationContext(..

스프링 세션 3_ 객체 지향 원리 적용

새로운 할인 정책 적용과 문제점 할인 정책을 애플리케이션에 적용할 때 할인 정책을 변경하려면 클라이언트인 OrderServiceImpl 코드를 고쳐야 한다. public class OrderServiceImpl implements OrderService { // private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); private final DiscountPolicy discountPolicy = new RateDiscountPolicy(); } 문제점 발견 우리는 역할과 구현을 충실하게 분리했다. 다형성도 활용 인터페이스와 구현 객체를 분리 OCP, DIP 같은 객체지향 설계 원칙을 충실히 준수 추상(인터페이스) 뿐만 아니라 구체(..

스프링 핵심 원리 이해1 - 예제 만들기

회원과 도메인 설계 회원 도메인 요구사항 주문과 할인 도메인 설계 주문과 할인 정책 회원은 상품을 주문할 수 있다. 회원 등급에 따라 할인 정책을 적용할 수 있다 회원 객체 다이어그램 회원 도메인 개발 회원 엔티티 package hello.spring.hello.spring; import java.lang.reflect.Member; public class Member { private Long id; private String name; public Member(Long id, String name) { this.id = id; this.name = name; } public Long getId(){ return id; } public void setId(Long id){ this.id = id; } ..

스프링 기본편 강의 Session-1 정리본

스프링 생태계 스프링은 여러가지 기술의 모음이다. 스프링의 핵심이 되는 기술 1. 스프링 프레임워크 핵심 기술: 스프링DI 컨테이너, AOP, 이벤트, 기타 웹기술: 스프링 MVC, 스프링 WebFlux 데이터 접근 기술: 트랜잭션, JDBC, ORM지원, XML지원 기술 통합: 캐시. 이메일, 원격접근, 스케줄링 테스트: 스프링 기반 테스트 지원 언어: 코틀린, 그루비 최근에는 스프링 부트를 통해서 스프링 프레임워크의 기술들을 편리하게 사용 2. 스프링 부트 스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본으로 사용 단독으로 실행할 수 있는 애플리케이션을 쉽게 생성 Tomcat 같은 웹서버를 내장해서 별도의 웹서버를 설치하지 않아도 됨 손쉬운 빌드 구성을 위한 starter 종속성 제공 ( st..

11월 3일 spring 실시간 강의 정리본

자바에서 객체 지향 프로그래밍은 무엇인가? 클래스(class) 사물의 특성을 소프트웨어적으로 추상화하여 모델링 한 것으로 객체를 만들 수 있는 틀(Template)로써 오브젝트의 정적인 상태 객체(object) 클래스를 실제 사용할 수 있도록 만든 것으로 메모리 공간을 할당해 놓은 인스턴스(Instance)라고도 하며 클래스의 동적인 상태를 의미합니다.(new 명령어를 통해 생성) 자바 화이트 페이퍼 백서 https://www.mit.edu/afs.new/sipb/user/marc/hotjava/doc/overview/java/index.html 요약 ) 객체지향을 잘 사용하기 위해서 온갖 좋은 말 다 써서 갖다붙임. 야 우리 심플해 자바는 다 찢는다 내용 우리는 심플에 씨랑 씨플플이랑 달라 객체지향적이..

TIL 11월 5일 spring 실시간 강의 정리본

스프링은 왜 쓰는걸까? 조직의 규모, 서비스의 규모 프로덕트라고 하는건 살아있다 계속 요구사항이 들어와서 변화해야하는게 많다. 설계단위보려면 클래스 다이어그램 참고해보자! 초기 스타트업은 프로덕트를 새로 만드는 사람 요구사항에 대해 예민하게 반응해야함 확장가능하고 변경하기 용이한 스프링!! 코드 흐름 정리해보기 annotation중요 !! 나만의 셀렉샵 만들기 rest api !! 스프링 기본 레이어 구성 - 레이어드 아키텍쳐에서 나왔다. 스프링은 뿅하고 나온게 아니다! 객체 지향 컨셉에서 나온거다. 그 컨셉 따서 나온게 바로 겁나 cool한 Java다. GoF의 디자인 패턴 참고해보기 (자바는 아니고 C++) reuseable 썻던 코드 계속쓰면 생산성 떨어짐 프로덕트 유지보수 리유저블 집착수준 객체 ..

11월 4일 spring 실시간강의 정리본

concecptual ,Inheritance상속, modeling What is ...object ...? = 모든 것은 사물이다. everything is an object in java eg) 프로그래밍에서 객체는 예를 들어 기능을 설계한다고 가정해보자 고객, 라이더, 가게 각각 어떤기능이 필요한지 설계한다 (도메인 지식) 고객 보니까 뭘 필요할까? 모델링한다 고객이 주문기능을 하기 위해 어떤 메소드가 필요할까? 상속 - 상속은 다시 사용이 가능하다 (다형성) //고객 추상화 모델링하면서 = > 필요없는 정보는 걸러낸다 package lec.object; public class User { user name phone number adress location information etc } publi..

25일차 개발일지 _ About Spring #2

좋은 객체 지향 설계의 5가지 원칙(SOLID) 좋은 객체 지향 설계의 5가지 원칙 from 클린코드 저자 로버트 마틴 SRP: 단일 책임 원칙 (Single Reponsibility Principle) OCP: 개방-폐쇄 원칙 (Open-Closed Principle) LSP: 리스코프 치환 원칙 (Liskov Substitution Principle) ISP: 인터페이스 분리 원칙 (Interface Segregation Principle) DIP: 의존관계 역전 원칙 (Dependency Inversion Principle) SRP: 단일 책임 원칙 (Single Reponsibility Principle) 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이라는 것은 모호하다. 클 수 있고, 작..