spring (8) 썸네일형 리스트형 5. Spring Data JPA Q. Spring Data JPA 장단점장점 : 생산성 향상, 코드 단순화, DB 독립적단점 : 복잡한 쿼리 작성에 어려움, 성능 이슈 발생 가능Q. Lazy vs Eager Loading 차이Lazy : 필요 시점에 조회(지연 로딩, N+1 문제 가능성)Eager : 즉시 조회(성능 이슈 가능성)Q. 영속성 컨텍스트란?Entity를 저장, 조회, 관리하는 공간1차 캐시, 쓰기 지연, 변경 감지 기능 지원 2. Spring 핵심개념(기본) Q. Spring이란?자바 플랫폼의 오픈소스 프레임워크핵심기능 : IoC(DI), AOP목적 : 객체 관리와 결합도 감소를 통한 유지보수성 향상Q. IoC 컨테이너란?객체 생성과 관리, 의존성 주입을 담당하는 컨테이너BeanFactory : 기본 Ioc 기능 제공(지연 로딩 : 빈이 실제로 요청될 대 생성)ApplicationContext : BeanFactory의 확장으로 국제화/이벤트처리/AOP 등을 제공(즉시 로딩)Q. Spring context(ApplicatoinContext)Spring 프레임워크가 제공하는 Ioc컨테이너를 의미빈(Bean)의 생성, 의존성 주입(DI), 라이프사이클 관리 등 객체를 관리하는 역할주요 특징빈 관리(Bean Management) : 객체의 생성, 초기화, 관리 및.. 1. @Async(비동기) Spring에서 비동기(Asynchronous) 처리를 지원하기 위해 사용된다. 내부적으로는 TaskExecutor를 활용하여 메서드를 별도의 스레드에서 실행된다. @Async 어노테이션 내부 동작1. 프록시(Proxy) 기반 동작Spring AOP를 이용하여 프록시 객체가 생성된다.@Async가 적용된 메서드를 호출 시 프록시 객체가 대신 실행하고, 실제 메서드는 별도의 스레드에서 실행된다.같은 클래스 내에서 this.asyncMethod()로 직접 호출하면 프록시를 거치지 않아 비동기로 실행되지 않는다.2. TaskExecutor를 활용한 비동기 실행@Async는 TaskExecutor(스레드 풀)을 이용하여 실행된다.SimpleAsyncTaskExecutor를 사용하지만, @EnableAsync와 .. [Spring] AOP와 @Transactional의 동작원리 출처 : https://velog.io/@ann0905/AOP%EC%99%80-Transactional%EC%9D%98-%EB%8F%99%EC%9E%91-%EC%9B%90%EB%A6%AC [Spring] AOP와 @Transactional의 동작 원리 오늘은 @Transactional의 동작 원리를 AOP와 함께 좀 더 자세하게 조사해보려고 한다.여기서 다루는 내용은 다음과 같다.AOP란 무엇이며 왜 사용하는가Spring AOP는 왜 프록시를 사용하는가@Transactional은 velog.io @Transactional의 동작 원리 참고 링크: Proxy형태로 동작하는 JPA @Transactional 참고 링크: Spring AOP에서 Proxy란 ? 참고 링크: [Spring] @Transactio.. [WEB기초] Spring 생성자 주입을 써야하는 이유 생성자 주입을 사용해야하는 이유 객체의 불변성 확보 수정자 주입이나 일반 메소드 주입을 사용하면, 불필요하게 수정의 가능성을 열어두게 된다. SOLID 5원칙 중 OCP 원칙을 지키며 객체의 불변성을 확보할 수 있다. 테스트 코드의 작성 테스트 코드를 순수 자바코드로 작성할 수 있다. 컴파일 시점에 객체를 주입받아 테스트 코드를 작성할수 있으며, 주입하는 객체가 누락된 경우 컴파일 시점에 오류를 발경할 수 있다. 필드 주입의 경우 순수 자바코드로 단위테스트를 작성하는 것이 불가능하다 final 키워드 작성 및 Lombok과의 결합 final 키워드를 사용할 수 있고, Lombok과의 결합을 통해 코드를 간결하게 작성할 수 있다. 순환 참조 에러 방지 순환 참조 문제를 애플리케이션 구동( 객체의 생성 ) .. [Spring] 1. 쇼핑몰 프로젝트 환경 및 계획 1. 목적 Spring Framework(MVC)를 기반으로 한 쇼핑몰 프로젝트를 진행하려고 합니다. 실무에서는 직접 세팅하지 못한 환경설정, 접하지 못했던 기술(ex. RestfulAPI, JPA, Lamda, ...)들에 대한 아쉬움이 컷습니다. 그래서 앞으로 쇼핑몰 프로젝트를 통해서 아쉬운 점을 채우려고 합니다. 쇼핑몰 프로젝트를 통해 얻고자 하는 점은 크게 3가지가 있습니다. 첫 번째. 사용해보지 못했던 기술들을 직접 사용해보는 것 입니다. 더불어 왜 이 기술을 쓰는지, 이전 기술보다 나은점이 무엇인지 까지 공부할 계획입니다. 두 번째. 개발서적(Java의 정석, 토비의 스프링...)등을 읽다보니 진행할 프로젝트는 쇼핑몰이 가지고 있는 핵심적인 기능들을 진행하려고 합니다. 개발 계획은 다음과 같습.. [WEB기초] DI(Dependency Injection) - 의존성 주입 DI(Dependency Injection) 스프링이 다른 프레임워크와 차별화되어 제공하는 의존관계 주입 기능으로, 객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입 시켜주는 방식이다. 객체 자체가 아니라 Framework에 의해 객체의 의존성이 주입되는 설계 패턴. DI를 통해서 모듈 간의 결합도가 낮아지고 유연성이 높아진다. Framework에 의해 동적으로 주입되므로 여러 객체간의 결합이 줄어든다. Dependency Injection은 Spring Framework에서 지원하는 IoC의 형태 설정에 명시된대로 Container가 1) bean 객체를 생성하고 2) 종속된 주입을 수행한다. Dependency Injection(의존성 주입)과 Inversion Of Control(제어의 역전.. [토비의 스프링] Spring 1. 스프링이란 무엇인가? 스프링은 자바 엔터프라이즈 애플리케이션 개발에 사용되는 애플리케이션 프레임워크 이다. 2. 애플리케이션의 기본 틀 - 스프링 컨테이너 스프링은 스프링 컨테이너 또는 애플리케이션 컨텍스트라고 불리는 스프링 런타임 엔진을 제공한다. 스프링 컨테이너는 설정정보를 참고로 해서 애플리케이션을 구성하는 오브젝트를 생성하고 관리한다. 스프링 컨테이너는 독립적으로 동작할 수도 있지만 보통 웹 모듈에서 동작하는 서비스나 서블릿으로 등록해서 사용한다. 3. 공통 프로그래밍 모델 - IoC/DI, 서비스 추상화, AOP 프레임워크는 애플리케이션을 구성하는 오브젝트가 생성되고 동작하는 방식에 대한 틀을 제공해줄 뿐만 아니라, 애플리케이션 코드가 어떻게 작성돼야 하는지에 대한 기준도 제시해준다. 이런.. 이전 1 다음