spring

spring/spring 핵심

스프링 핵심 원리 이해 6 - 의존관계 자동 주입

1. 의존관계 주입 방법 - 4가지 크게 4가지 존재 생성자 주입 - 권장 수정자 주입(setter 주입) - 정말 필요시 -- 3, 4 번은 사용하지 말 것 -- 필드 주입 일반 메서드 주입 복습 spring container 설정 과정 모든 @Component 찾아서 등록 (의존관계 주입을 바로 수행하지 않는다.) 의존 관계 주입을 수행 (@Component가 다 등록 된 이후에 수행) 하지만 예외적으로 생성자 주입이나 수동 bean 설정 같은 경우에는 java code 특성상 1,2, 단계가 동시에 진행 1.1. 생성자 주입 생성자 호출시점에 딱 1번만 호출되는 것이 보장 불변, 필수 의존관계에 사용 불변 : (외부에서 생성자 값 변경 못하게) 필수(private final를 이용해서 생성자의 pa..

spring/spring 핵심

⭐️ 스프링 핵심 원리 이해 5 - 컴포넌트 스캔

1. 컴포넌트 스캔과 의존관계 자동 주입 컴포넌트 스캔 필요성 등록해야 할 spring bean이 수백개가 되면 일일이 등록하기 힘들고, 설정 정보도 커지고, 누락하는 문제도 발생 bean 등록을 해주는 컴포넌트 스캔과 더불어 의존관계를 주입 해주는 @Autowired도 제공 @Bean 등록 Overiding, 예외 처리 조건 SpringBootApplication 실행 시 : 동일 @Bean 명일 경우 NoUniqueBeanDefinitionException 발생 SpringApplication 실행 시 : 동일 @Bean 명이여도 overriding 해버림 - 위험 단위 Test 실행 시 : 동일 @Bean 명이여도 overriding 해버림 - 위험 Spring Test 실행 시 : 동일 @Bean..

spring/spring 핵심

스프링 핵심 원리 이해 4 - 싱글톤 컨테이너

발생 원인 순수 자바 컨테이너로 만들었던 AppConfig를 웹 애플리케이션으로 직접 사용하면 요청할 때마다 설정파일 내의 객체를 새로 생성하고 삭제하는 과정을 거친다. 메모리 낭비가 심하다. @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer(){ AppConfig appConfig = new AppConfig(); MemberService memberService1 = appconfig.memberService(); MemberService memberService2 = appconfig.memberService(); assertThat(memberService1).isNotSameAs(memberService2); } 해결방안 해당 객체를 1개..

spring/spring 핵심

스프링 핵심 원리 이해 3 - 스프링 컨테이너와 스프링 빈

0. 흐름 AppConfig 변화 AppConfig의 return type이 구체 클래스여도 작동에는 문제가 없지만 설정파일에서는 역할과 구현이 분리가 되어야 한눈에 파악이 쉽기 때문에 스프링 추상클래스로 나타낸다. @Configuration public class AppConfig{ // service @Bean public MemberService memberService(){ return new MemberServiceImpl(memberRepository()); } @Bean public Orderservice orderService(){ return new OrderServiceImpl(memberRepository(), discoutnPolicy()) } // 객체 @Bean public M..

spring/spring 핵심

스프링 핵심 원리 이해 0 - 객체지향 설계와 스프링

1. EJB 단점 : 웹 관련 기술과 ORM의 기술을 제공하지만 너무 복잡하고 EJB에 의존적 대안책 : 스프링(웹 관련 기술), 하이버네이트(ORM 기술 == JPA) 스프링 : EJB 없이도 자바로만 가지고 충분히 고품질의 확장 가능한 애플리케이션 개발할 수 있음을 보여줌. EJB 컨테이너 대체 단순함 현재 표준 기술 하이버네이트(JPA) : 하이버네이트 JPA의 새로운 표준 정의 EJB EntityBean 기술 대체 JPA 표준 정의 EJB EntityBean -> 하이버네이트 -> JPA(인터페이스) JPA의 90%는 하이버네이트로 구현 2. Spring 하나가 아닌 여러기능들의 모음 2.1. Spring Framework Spring의 여러 기능들 중 핵심 핵심 기술 : 스프링 DI 컨테이너(b..

spring/spring db2

7. 데이터 접근 기술 - Querydsl

1. Querydsl 설정 1.1. build.gradle plugins { id 'org.springframework.boot' version '2.6.5' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' // hibernate.version 버그로 인한 version downgrade 방법 ext["hibernate.version"] = "5.6.5.Final" configurations { compileOnly { extendsFrom annotationProcessor } } re..

spring/spring db2

6. 데이터 접근 기술 - 스프링 데이터 JPA

스프링 데이터 JPA 소개 spring Data는 interface이고 공통 기능만 존재 - crud+쿼리 , 페이징처리, 등등 존재 해당 구현체로 spring data jpa, spring data mongoDB, spring data ... 등이 존재 결론은 spring data JPA를 잘 사용하기 위해서는 spring, db, 하이버네이트, jpa를 먼저 확실히 알아서 그걸 조금 편하게 해주는 것이 spring data JPA라는 것임을 잊지 말자 1. 스프링 데이터 JPA 주요 기능 스프링 데이터는 JPA를 편리하게 사용할 수 있도록 도와주는 라이브러리이다. 수많은 편리한 기능을 제공하지만 가장 대표적인 기능은 공통 인터페이스 기능 쿼리 메서드 기능 1.1. 공통 인터페이스 기능 JpaRepos..

spring/spring db2

5. 데이터 접근 기술 - JPA

1. JPA 설정 spring-boot-starter-data-jpa 라이브러리 JPA와 spring data JPA를 springboot와 통합하고, 설정도 간단히 할 수 있다. spring-boot-starter-jdbc를 포함(의존)한다. mybatis-spring-boot-starter도 spring-boot-starter-jdbc를 포함 추가되는 library hibernate-core : JPA 구현체인 하이버네이트 라이브러리 jakarta.persistence-api : JPA 인터페이스 spring-data-jpa : 스프링 데이터 JPA 라이브러리 build.gradle plugins { id 'org.springframework.boot' version '2.6.5' id 'io.spr..

wooweee
'spring' 카테고리의 글 목록 (2 Page)