Category: Spring Core

0

Spring - 의존성 주입 방식

목차 Spring - 의존성 주입 방식 Spring - 스프링 컨테이너 생성과 Bean 등록 Spring - 스프링 빈 Spring - 스프링 컨테이너 의존성 주입@Autowired와 @Inject를 이용해서 의존성을 주입해준다. @Autowired와 @Inject를 붙일 수 있는 위치 생성자 Setter 필드 생성자 주입 생성자를 통해서 의존 관계를 주입하는 방법 스프링 컨테이너가 Bean 을 생성할때 객체의 생성자를 이용해 의존관계를 주입하는 방식입니다. 생성자를 통한 의존성 주입 방식은 스프링에서 가장 권장하는 방식입니다.

0

스프링 핵심 원리 이해 - 객체 지향 원리 적용

목차 Post not found: spring-boot/spring-core/basic/basic2 객체 지향 설계 5원칙 SOLID DIP 원칙 위반 - 추상화와 구체화 둘다 의존MemberServiceImpl 클래스는 MemberRepository 인터페이스를 의존하면서 구현 클래스인 MemoryMemberRepository도 의존하고 있다. public class MemberServiceImpl implements MemberService{ // MemberServiceImpl 클래스는 MemberRepository 인터페이스와 구현체인 MemoryMemberRepository 둘다 의존하고 있다. private final MemberRepository memberRepository = new MemoryMemberRepository(); @Override public void join(Member member) { memberRepository.save(member); } @Override public Member findMember(Long memberId) { return memberRepository.findById(memberId); }} OrderServiceImpl 클래스는 MemberRepository 인터페이스와 DiscountPolicy 인터페이스를 의존하면서 구현 클래스인 MemoryMemberRepository 와 RateDiscountPolicy 를 의존하고 있다. 추상화와 구체화 둘다 의존하는 문제가 있다.–> DIP 위반 DIP의 원칙을 지키기 위해 의존 class내에서 구현 클래스를 가져오는 부분을 삭제하게 되면 객체가 존재하지 않아서 nullPointException이 발생한다. public class OrderServiceImpl implements OrderService { // OrderServiceImpl 클래스는 MemberRepository 인터페이스와 구현체인 MemoryMemberRepository // DiscountPolicy 인터페이스와 구현체인 RateDiscountPolicy 를 의존하는 문제점이 있다. private final MemberRepository memberRepository = new MemoryMemberRepository(); private final DiscountPolicy discountPolicy = new RateDiscountPolicy(); @Override public Order createOrder(Long memberId, String itemName, int itemPrice) { Member member = memberRepository.findById(memberId); int discountPrice = discountPolicy.discount(member, itemPrice); return new Order(memberId, itemName, itemPrice, discountPrice); }}

0

Spring - BeanDefinition

목차 Spring - 의존성 주입 방식 Spring - 스프링 컨테이너 생성과 Bean 등록 Spring - 스프링 빈 Spring - 스프링 컨테이너 BeanDefinition 스프링 컨테이너는 BeanDefinition 을 이용해 스플링 빈을 생성합니다. 스프링 컨테이너는 BeanDefinition 에 정의된 빈 메타정보를 이용해 스프링 빈을 생성합니다. 빈 메타 정보는 XML, 자바코드 등으로 작성되며 @Bean, <bean> 당 하나씩 메타정보가 생성됩니다. 스프링은 정의된 메타정보들을 읽어와 BeanDefinition 을 생성합니다. ` 당 하나씩 메타정보가 생성됩니다. --> 서로 다른 방식으로 정의된 빈 메타정보를 BeanDefinition 으로 생성하기 위해 스프링은 다양한 BeanDefinitionReader 를 제공합니다. AnnotationConfigApplicationContext 는 AnnotatedBeanDefinitionReader 를 사용해서 AppConfig.class 를 읽고 BeanDefinition 을 생성합니다. GenericXmlApplicationContext 는 XmlBeanDefinitionReader 를 사용해서 appConfig.xml 설정 정보를 읽고 BeanDefinition 을 생성합니다.

0

Spring - 스프링 컨테이너 생성과 Bean 등록

목차 Spring - 의존성 주입 방식 Spring - 스프링 컨테이너 생성과 Bean 등록 Spring - 스프링 빈 Spring - 스프링 컨테이너 스프링 컨테이너 생성 과정과 Bean 등록 과정스프링 컨테이너를 생성할 때는 구성 정보를 지정해주어야 한다. 구성 정보는 클래스나 xml 을 이용해 정의할 수 있습니다. //스프링 컨테이너 생성ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); 스프링 컨테이너 생성스프링 컨테이너 생성시 설정 정보를 이용해 스프링 컨에티너를 생성합니다. 아래에서는 AppConfig.class 를 설정 정보로 이용해 스프링 컨테이너를 생성합니다. 스프링 빈 등록

0

Spring - 스프링 빈

목차 Spring - 의존성 주입 방식 Spring - 스프링 빈 Post not found: spring/spring-core/spring-bean-container 스프링 빈 스프링 IoC 컨테이너에 의해 생성되고 관리되는 객체를 보고 스프링 빈이라 부릅니다. Bean 객체는 스프링 컨테이너에 의해 생성 및 관리되며 일반적으로 싱글톤 객체로 생성됩니다. Bean 끼리 의존관계가 있을 경우 의존성 주입을 통해 사용할 수 있습니다. 스프링 컨테이너에 객체를 Bean 으로 등록하는 방법 XML 에 직접 등록하는 방법 @Configuration 과 @Bean 을 이용하여 직접적으로 등록을 하면 된다. Bean 어노테이션으로 정의할 때는 @Configuration 가지고 있는 클래스 안에 정의해야 한다. @Configuration 안에서 @Bean 을 사용해야 싱글톤을 보장 받을 수 있습니다. Component Scan을 이용하는 방법 Component 어노테이션이 붙어있는 클래스를 찾아서 Bean으로 등록해준다.

0

Spring - 스프링 빈

목차 Spring - 의존성 주입 방식 Spring - 스프링 컨테이너 생성과 Bean 등록 Spring - 스프링 빈 Spring - 스프링 컨테이너 스프링 빈 스프링 IoC 컨테이너에 의해 생성되고 관리되는 객체를 보고 스프링 빈이라 부릅니다. Bean 객체는 스프링 컨테이너에 의해 생성 및 관리되며 일반적으로 싱글톤 객체로 생성됩니다. Bean 끼리 의존관계가 있을 경우 의존성 주입을 통해 사용할 수 있습니다. 스프링 컨테이너에 객체를 Bean 으로 등록하는 방법 XML 에 직접 등록하는 방법 @Configuration 과 @Bean 을 이용하여 직접적으로 등록을 하면 된다. Bean 어노테이션으로 정의할 때는 @Configuration 가지고 있는 클래스 안에 정의해야 한다. @Configuration 안에서 @Bean 을 사용해야 싱글톤을 보장 받을 수 있습니다. XML 을 이용해 Bean 등록하기최근 스프링 부트의 등장으로 xml 을 이용해 스프링을 설정하는 방법은 잘 사용하지 않는 방식입니다. xml 을 이용해 스프링 컨테이너를 설정하는 것의 장점은 컴파일 없이 빈 설정 정보를 변경할 수 있다는 점이다.

0

Spring - 스프링 컨테이너

목차 Spring - 의존성 주입 방식 Spring - 스프링 컨테이너 생성과 Bean 등록 Spring - 스프링 빈 Spring - 스프링 컨테이너 IoC(Inversion of Control) - 제어의 역전객체의 생성, 객체간의 의존성 과 같은 프로그래밍의 흐름을 개발자가 아니라 프레임워크나 라이브러리 영역에서 관리 해주는 것을 IoC (제어의 역전) 이라 이야기 합니다. 즉, 프로그램에 대한 제어권이 개발자가 아니라 프레임워크나 라이브러리에서 관리가 됩니다. 스프링 컨테이너와 IoC(Inversion of Control)스프링에는 스프링 컨테이너를 제공하는데 스프링 컨에티너에서는 객체를 생성, 의종성 주입등을 대신해주기 때문에 IoC 컨테이너 라고 불립니다. 스프링은 IoC 컨테이너 를 사용할 수 있게 ApplicationContext, BeanFactory 인터페이스를 제공합니다.