Java 82

스프링 컨테이너

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/lecture/55353?tab=curriculum 스프링 핵심 원리 - 기본편 - 인프런 | 학습 페이지 지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요.... www.inflearn.com 스프링 컨테이너 구조 직접 구성해보기 스프링은 AppConfig의 구성 정보를 이용해 스프링 컨테이너를 구성한다. @Bean 어노테이션이 달려 있는 객체들을 등록하고 이후 각각 객체의 의존 관계를 설정해준다. 그림으로 나타내면 아래와 같다. bean이 잘 ..

Java/Spring 2021.09.07

의존성관계 주입

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/lecture/55344?tab=curriculum 스프링 핵심 원리 - 기본편 - 인프런 | 학습 페이지 지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요.... www.inflearn.com 위 예시는 오더 서비스 구현 객체 안에서 MemoryMemberRepository와 RateDiscountPolicy 둘을 직접 생성해 사용하고 있기 때문에 DIP, OCP 위반이다. 이를 해결하기 위해선 외부에서 MemoryMemberRepository와..

Java/Spring 2021.09.06

OCP, DIP 위반

DIP 위반 (클라이언트 클래스는 인터페이스에만 의존해야함, 역할과 구현을 철저히 분리) OrderServiceImpl가 인터페이스인 MemberRepository와 DiscountPolicy에만 의존되있는 거처럼 보이지만 실제론 구현체인 MemoryMemberRepository, RateDiscountPolicy에도 의존하고 있음 * new를 통해 넣어주고 있기 때문 OCP 위반 (확장을 자유롭게 할 수 있어야하지만 변경시 클라이언트 클래스의 로직에 영향이 가면 X) 할인 정책을 바꿀 때 OrderServiceImpl 내에서 코드 변경이 이루어짐 FixDiscountPolicy -> RateDiscountPolicy

Java/Spring 2021.09.03

단일 책임 원칙 예시

VIP는 무조건 1000원을 할인 해주는 정액 할인 정책 FixDiscountPolicy 객체가 DiscountPolicy 인터페이스에 끼워져있다. 여기서 OrderServiceImpl 입장에선 할인에 대해 전혀 몰라도 됨 할인 정책에 대해선 DiscountPolicy가 알아서 자율적으로 동작 만약 DiscountPolicy가 없다면 할인 정책에 대한 변경이 들어왔을 때 OrderServiceImpl의 로직을 변경해야함 OrderServiceImpl는 주문을 생성하는 하나의 책임, DiscountPolicy는 할인 가격을 알려주는 하나의 책임만 있기 때문에 단일 책임 원칙을 잘 지킨 코드이다.

Java/Spring 2021.08.31

좋은 객체 지향 프로그래밍이란?

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., 스프링 핵심 원리를 이해하고, 성장하는 개발자가 되어보세요! 📣 확인해주 www.inflearn.com 다형성 역할과 구현 역할과 구현으로 세상을 구분 - 운전자 (운전을 하는 역할) - 자동차 (운전자를 일정 구역에 이동시키는 역할) - 여기서 그랜저를 테슬라로 바꿔도 자동차 역할만 한다면 아무 문제 없음..

Java/Spring 2021.08.28

StringTokenizer vs String.split()

https://blog.naver.com/PostView.nhn?blogId=makga87&logNo=221949199317&parentCategoryNo=&categoryNo=17&viewDate=&isShowPopularPosts=true&from=search [StringTokenizer VS String.split] 누가 더 빠른가 백엔드 개발자로써 개발 시, 유의 해야할 사항 중 하나, 바로 성능이다. JAVA 라이브러리를 쓰든, 오픈... blog.naver.com https://blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=chogahui05&logNo=221474002967&categoryNo=12&parentCategoryNo=0&vi..

Java/자바 2021.08.26

String vs StringBuffer vs StringBuilder

String String은 절대 변경이 불가능한 데이터 타입이기 때문에 연산을 할 때 새로운 문자열을 만든다. String의 내부 구조는 final char[] 변경되지 않는 문자 배열이기 때문 새로 만들어진 문자열은 참조형이기 때문에 주소 값은 stack에 객체는 호출 되기 전까지 heap 영역에 쌓이게 된다. 다량의 문자열이 만들어진다면 heap 영역에 string 객체가 계속 쌓이게 되기 때문에 이는 메모리 관리에 좋지 않다. https://novemberde.github.io/2017/04/15/String_0.html Khbyun's blog Novemberde's dev novemberde.github.io 정리가 무지 잘되어 있어서 방문해보시길 위 블로그 개발자님이 좋은 글을 써주셔서 직접 ..

Java/자바 2021.08.26

객체가 주입 & 객체 지향의 장점

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/lecture/49594?tab=curriculum 객체가 주입되는 과정 DataSource를 스프링 컨테이너에 등록해 JdbcMemberRepository에서 사용하는 모습 MemberRepository 인터페이스를 등록하는 @bean에 리턴 값을 JdbcMemberRepository을 넣어줬다. * 쉽게 말해 MemberRepository 인터페이스에 객체 JdbcMemberRepository를 꽂아 사용 객체 지향의 장점 인터페이스를 구현하는 memory, jdbc 구현체 둘이 ..

Java/Spring 2021.08.25

자바 코드로 스프링 bean 직접 등록

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/lecture/49587?tab=curriculum 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 학습 페이지 지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요.... www.inflearn.com bean 직접 등록 자바 설정 클래스에 직접 bean을 등록해 관리할 수 있다. 컨트롤러는 스프링이 직접 관리하기 때문에 어노테이션과 오토와이얼드를 설정해준다. * DI 주입 참고 블로그 https://mangky..

Java/Spring 2021.08.23

컴포넌트 스캔과 자동 의존관계 설정

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/lecture/49586?tab=curriculum 컴포넌트 스캔 DemoApplication을 통해 스프링이 실행이 되면 하위에 있는 컴포넌트들을 모두 스캔해 스프링 컨테이너 (IOC Container)에 등록한다. * 스프링은 컨테이너에 bean을 등록할 때 싱글톤으로 등록한다. (유일한 하나를 등록해 공유) MVC 패턴에서 사용하는 대표적인 컴포넌트는 @Controller, @Service, @Repository인데 각각 @Component이 설정되어 있기 때문에 스프링이 스캔할..

Java/Spring 2021.08.22