
Rod Johnson이 2002년에 처음 개발한 자바(JAVA) 플랫폼을 위한 오픈 소스 프레임워크이다.원래는 엔터프라이즈 애플리케이션 개발을 위한 복잡함을 줄이는 목적으로 시작됐다.스프링이라고 하면 스프링 부트, 스프링 프레임워크 등을 포함한 스프링 생태계를 의미한다

하나의 클래스는 하나의 책임만 가져야한다.하나의 책임이라는 것은 모호하다.클 수도 있고 작을 수도 있다.문맥과 상황에 따라 다르다.이 부분은 경험적 요소가 필요하다.중요한 것은 변경이다. 변경이 있을 때 파급효과가 적으며 단일 책임 원칙을 잘 따른 것이다.예) UI 변

어떤 쇼핑몰 사이트가 있다고 가정하자이 사이트의 회원들은 2개의 등급이 있다.BasicVIP구매를 할때 VIP 회원은 고정 금액인 1000원을 할인해주는 정책이 존재했다.이후 이 쇼핑몰에서 구매금액에 10%를 할인해주는 새로운 할인 정책을 적용하려고 한다.할인 정책을

\[Spring] 객체 지향 원리 적용 에 이어.. 기존 프로그램은 구현 객체가 스스로 필요한 객체를 생성하고 연결하고 실행했다.구현 객체가 프로그램의 제어 흐름을 조정했다.그러나 AppConfig의 등장으로 구현 객체는 자신의 로직을 실행하는 역할만 담당한다.즉, 제

[Spring] 객체 지향 설계와 스프링 [Spring] 좋은 객체 지향 설계의 5가지 원칙(SOLID) [Spring] 객체 지향 원리 적용 [Spring] IoC, DI위 글에서 작성한 코드들은 스프링을 사용한 코드가 아닌 순수 자바 코드만으로 작성된 것이다.이제

스프링 컨테이너에 등록된 모든 빈을 조회하는 방법

웹 애플이케이션은 보통 여러 고객이 동시에 요청을 한다.우리가 만들었던 스프링 없는 순수한 DI 컨테이너인 AppConfig는 요청을 할 때 마다객체를 새로 생성한다. 고객 트래픽이 초당 100이 나오면 초당 100개 객체가 생성되고 소멸된다!즉, 메모리 낭비가 심하다

이전에 스프링 빈을 등록할 때는 자바 코드의 @Bean이나 XML의 등을 통해서설정 정보에 직접 등록할 스프링 빈을 나열했다.아래 예제에서는 몇개가 안되었지만, 이렇게 등록해야 할 스프링 빈이 수십, 수백개가 되면 일일이 등록하기도 귀찮고, 설정 정보도 커지고, 누락

컴포넌트 스캔은 @Component 뿐만 아니라 다음과 내용도 추가로 대상에 포함한다. 컴포넌트 스캔에서 사용스프링 MVC 컨트롤러에서 사용스프링 MVC 컨트롤러로 인식스프링 비즈니스 로직에서 사용@Service 는 특별한 처리를 하지 않는다. 대신 개발자들이 핵심 비

컴포넌트 스캔에서 같은 빈 이름을 등록되는 경우가 있는데이런 경우는 두가지로 나뉜다.자동 빈 등록 vs 자동 빈 등록 수동 빈 등록 vs 자동 빈 등록컴포넌트 스캔에 의해 자동으로 스프링 빈이 등록되는데, 그 이름이 같은 경우 스프링은 오류를 발생시킨다.Conflict

다양한 의존 관계 주입 방법

주입할 스프링 빈이 없어도 동작해야 할 때가 있다.그런데 @Autowired 만 사용하면 required 옵션의 기본값이 true 로 되어 있어서자동 주입 대상이 없으면 오류 가 발생한다.@Autowired(required=false) : 자동 주입할 대상이 없으면 수

build.gradle 에 라이브러리 및 환경 추가 후 gradle 업데이트외부 라이브러리에서 lombok 설치 됐는지 확인설정 -> 플러그인 -> Lombok 검색 -> 설치설정 -> 컴파일러 -> 어노테이션 프로세서 -> 어노테이션 처리 활성화 체크HelloLomb

현재 존재하는 할인 정책은 두개 이다.FixDiscountPolicy: 1000원 할인 정책RateDiscountPolicy: 10% 할인 정책@Qualifier 는 추가 구분자를 붙여주는 방법이다.주입 시 추가적인 방법을 제공하는 것이지 빈 이름을 변경하는 것은 아니

할인 서비스를 제공하는데, 클라이언트가 할인의 종류(rate, fix)를 선택할 수 있다고 가정해보자.스프링을 사용하면 소위 말하는 전략 패턴을 매우 간단하게 구현할 수 있다.DiscountService는 Map으로 모든 DiscountPolicy 를 주입받는다. 이때

스프링 컨테이너 생성스프링 빈 생성초기화 콜백빈이 생성되고, 빈의 의존 관계 주입이 완료된 후 호출소멸전 콜백빈이 소멸되기 직전에 호출스프링 종료생성자는 필수 정보(파라미터)를 받고, 메모리를 할당해서 객체를 생성하는 책임을 가진다. ?반면에 초기화는 이렇게 생성된 값

https://start.spring.io/스프링 부트 프로젝트를 빠르게 생성할 수 있는 사이트 start.spring.io에서 입력하는 항목들을 정리한 문서이다.위 항목들은 생성된 프로젝트의 구조, 기본 패키지, 빌드 도구에 직접적인 영향을 주므로 정확히 설

[Spring] Spring Boot MySQL 연동

JPA의 N+1 문제 연관 관계가 있는 엔티티를 조회할 경우, 조회된 데이터 개수(N) 만큼 연관 관계의 조회 쿼리가 추가로 발생하는 문제 즉, 한 번의 조회로 끝날 것 같지만 실제로는 N+1번의 쿼리가 발생하여 성능 저하를 일으킨다.