본문 바로가기

IT/Spring21

[Spring] 스프링 핵심 원리 - 기본편 (7) 이전 글 [Spring] 스프링 핵심 원리 - 기본편 (6) 의존관계 자동 주입 다양한 의존관계 주입 방법 생성자 주입 - 생성자 호출시점에 1회 호출 보장 - 불변, 필수 의존관계에 사용 - @Autowired(생성자가 딱 하나만 있으면 @Autowired 생략해도 자동 주입 - spring bean인 경우) 수정자 주입 - setter에 Autowired 적용 - 선택(required=false), 변경 의존관계에 사용 필드 주입 - @Autowired private MemberRepository memberRepository; - 외부에서 변경 불가능 -> setter 만들어야함 - 안쓰는게 좋으나 @Configuration 혹은 테스트 과정 중에는 가능 일반 메서드 주입 - 일반 메서드를 통해 주.. 2023. 3. 23.
[Spring] 스프링 핵심 원리 - 기본편 (6) 이전 글 [Spring] 스프링 핵심 원리 - 기본편 (5) 컴포넌트 스캔 컴포넌트 스캔과 의존관계 자동 주입 시작하기 @ComponentScan을 붙여주면 컴포넌트 스캔 가능 @Configuration도 @Component가 붙기 때문에 자동 등록된다. excludeFilters를 이용하여 Annotation 타입이 Configuration인 것들을 제거한다. @Autowired를 사용하면 자동 매핑된다. -> default로 타입이 같은 빈을 주입한다. @Component 동작 과정 @Autowired 동작 과정 각 구현 클래스에 @Component, @Autowired annotation 추가 후 아래와 같은 Configuration 파일 작성시 동작 가능 import org.springframew.. 2023. 3. 7.
[Spring] 스프링 핵심 원리 - 기본편 (5) 이전 글 [Spring] 스프링 핵심 원리 - 기본편 (4) 싱글톤 컨테이너 웹 애플리케이션과 싱글톤 스프링은 온라인 서비스 기술을 지원하기 위해 탄생 순수 DI 컨테이너는 AppConfig 요청마다 객체를 새로 생성한다. -> 해당 객체를 1개만 생성 후 공유하도록 설계한다. (싱글톤 패턴) import hello.core.AppConfig; import hello.core.member.MemberService; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; public class SingletonTest { @Test @DisplayName.. 2023. 3. 5.
[Spring] 스프링 핵심 원리 - 기본편 (4) 이전 글 [Spring] 스프링 핵심 원리 - 기본편 (3) 스프링 컨테이너와 스프링 빈 스프링 컨테이너 생성 ApplicationContext = 스프링 컨테이너, 인터페이스 스프링 컨테이너는 xml, 혹은 annotation 기반 자바 설정 클래스 AnnotationConfigApplicationContext는 ApplicationContext의 인터페이스 구현체 스프링 빈의 이름은 메소드 이름 사용, 직접 부여도 가능(유니크하도록) 빈 생성 후 의존 관계 주입 컨테이너에 등록된 모든 빈 조회 applicationContext에서 getBean을 사용하여 확인 BeanDefinition에서 역할별 bean 확인 가능 import hello.core.AppConfig; import org.junit.j.. 2023. 2. 11.
[Spring] 스프링 핵심 원리 - 기본편 (3) 이전 글 [Spring] 스프링 핵심 원리 - 기본편 (2) 스프링의 핵심 원리 이해2 - 객체 지향 원리 적용 1. 새로운 할인 정책 개발 추가 할인 정책 추가 RateDiscountPolicy, RateDiscountPolicyTest 파일 작성 import hello.core.member.Grade; import hello.core.member.Member; public class RateDiscountPolicy implements DiscountPolicy{ private int discountPercent = 10; @Override public int discount(Member member, int price) { if(member.getGrade() == Grade.VIP){ return.. 2023. 1. 28.
[Spring] 스프링 핵심 원리 - 기본편 (2) 이전 글 [Spring] 스프링 핵심 원리 - 기본편 (1) 스프링의 핵심 원리 이해1 - 예제 만들기 1. 프로젝트 생성 https://start.spring.io/ 에서 설정 후 spring boot 프로젝트 생성한다. 만들어진 프로젝트를 압축해제 후 Intellij에서 Import하여 확인한다. src/main/java/{group}/{Artifact}/{Artifate}Application을 run하여 정상 작동 여부를 확인한다. Intellij gradle 세팅 변경 2. 비즈니스 요구사항과 설계 3. 회원 도메인 설계 4. 회원 도메인 개발 Grade, Member - model public enum Grade { BASIC, VIP } public class Member { private L.. 2023. 1. 24.
[Spring] 스프링 핵심 원리 - 기본편 (1) 객체 지향설계와 스프링 1. 이야기 - 자바 진영의 추운 겨울과 스프링의 탄생 기존 EJB(Enterprise Java Beans) 사용 but 비싼 비용, 복잡하고 어려움, 느림 Spring -> EJB 컨테이너 대체, 단순함 Hibernate -> EJB 엔티티빈 기술 대체, JPA(Java Persistence API) 표준 정의 2. 스프링이란? 필수 : 스프링 프레임워크, 스프링 부트 선택 : 스프링 데이터, 스프링 세션, 스프링 시큐리티, 스프링 REST Docs, 스프링 배치, 스프링 클라우드 핵심 : 객체 지향 언어인 자바 언어 기반의 프레임워크 스프링 프레임워크 핵심 기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타 웹 기술 : 스프링 MVC, 스프링 WebFlux 데이터 접근 기술.. 2023. 1. 9.
[Spring][전문가를 위한 스프링 5] CH2. 스프링 시작하기 전문가를 위한 스프링 5(Pro Spring 5) - Ch 2. 스프링 시작하기 2.1 스프링 프레임워크 가져오기 Maven, Gradle 같은 빌드 도구를 사용 || Github에서 Spring Library Checkout 후 사용 사용하려는 Spring에 적절한 JDK 사용하기 JVM(Java Virtual Machine) : 구현이 필요한 abstract machine, 자바 바이트 코드가 실행될 수 있는 실행 환경 제공하는 사양 JRE(Java Runtime Environment) : 실행 환경을 제공하는데 사용, JVM의 실제 구현체 JDK(Java Development Kit) : JRE, 메뉴얼 및 자바 도구들을 담고 있는 것 JDK12 이상, Spring 5.1.8 사용 2.2 스프링 모.. 2022. 8. 15.
[Spring][전문가를 위한 스프링 5] CH1. 스프링 소개 전문가를 위한 스프링 5(Pro Spring 5) - Ch 1. 스프링 소개 1.1 스프링이란? Spring은 Java Application 개발을 위한 경량 Framework이다. Apache Struts와 같은 단순 Web App 개발뿐만 아니라 다양한 형태의 Java Application 개발이 가능하다. 기존 App 코드에 최소한의 영향을 준다.(경량) 1.1.1 스프링 프레임워크의 발전 과정 Spring 0.9 버전 Bean, AOP, JDBC, 추상 Transaction 지원 Spring 1.X 버전 Spring Core, Context, Dao, ORM, AOP, WEB, WEB MVC Spring 2.X 버전 DTD 아닌 XML 스키마 구성지원 @Transactional, @AspectJ .. 2022. 7. 23.
반응형