Framework/Spring

Framework/Spring

인프런 스프링 핵심 원리-기본편 #6 빈 스코프

싱글톤 빈 요청과 다르게, 프로토타입 빈 요청은 요청마다 새로운 프로토타입 빈을 생성하고 필요한 의존관계를 주입한다. 클라이언트에 전달 후 반환 및 관리는 하지 않는다. 스프링 컨테이너는 프로토타입 빈을 생성, 의존관계 주입, 초기화까지만 처리한다. 프로토타입 빈을 관리할 책임은 클라이언트에 있기 때문에 @PreDestroy 등의 종료 메서드가 호출되지 않는다. package hello.core.scope; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org...

Framework/Spring

인프런 스프링 핵심 원리-기본편 #5 싱글톤 컨테이너 / 의존관계 자동 주입

스프링 컨테이너에서 싱글톤은 기본적으로 동작한다. @Test @DisplayName("스프링 컨테이너와 싱글톤") void springContainer(){ // 1. 조회 : 호출할 떄마다 객체 생성 ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); // 2. 조회 : 호출할 때마다 객체 생성 MemberService memberService1 = ac.getBean("memberService", MemberService.class); MemberService memberService2 = ac.getBean("memberService", MemberService.class); // 참조 값이 다른 것을 확인..

Framework/Spring

인프런 스프링 핵심 원리-기본편 #4 스프링 컨테이너와 스프링 빈

2. Bean 조회하기 package hello.core.binfined; import hello.core.AppConfig; import hello.core.discount.DiscountPolicy; import hello.core.member.MemberRepository; import hello.core.member.MemoryMemberRepository; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.NoUniqueBeanDefinitionException; import org.springframework.context.annota..

Framework/Spring

인프런 스프링 핵심 원리-기본편 #3 스프링 핵심원리 2 - 객체 지향 원리 적용

AppConfig 클래스를 hello.core 디렉터리의 하위에 넣는다. public class AppConfig { public MemberService memberService(){ return new MemberServiceImpl(new MemoryMemberRepository()); } } 이렇게 MemberService() 함수를 정의해를 해주고, MemoryMemberRepository()를 매개변수로 한 MemberServiceImpl 객체를 반환한다. 이는 다음과 같은 코딩 방식을, 이렇게 바꿔주는 것이 가능하도록 한다. 이 코드는 인터페이스만 확인할 수 있으며 구현체에 전혀 의존하지 않는 코드가 되는 것이다. 즉 AppConfig는 생성한 객체 인스턴스의 참조를, 생성자를 통해서 주입 ..

Framework/Spring

인프런 스프링 핵심 원리-기본편 #2 스프링 핵심원리 1 - 예제 만들기

회원 도메인 개발 Member 도메인 package hello.core.member; public class Member { private Long id; private String name; private Grade grade; public Member(Long id, String name, Grade grade) { this.id = id; this.name = name; this.grade = grade; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.nam..

Framework/Spring

인프런 스프링 핵심 원리-기본편 #1 객체지향 설계와 스프링

EJB (Enterprise JavaBeans) : 기업 환경의 시스템을 구현하기 위한 서버측 컴포넌트 모델 POJ 의 개념의 도래 (순수 자바로 돌아감) ↓ EJB 컨테이너를 대체할 Spring EJB 엔티티빈 기술을 대체할 Hibernate, JPA의 새로운 표준을 정의하였다. '스프링' 이라는 이름은 전통적인 EJB라는 겨울을 넘어 새로운 시작이라는 뜻을 가짐. + Entity Bean ORM 기술, 쿼리를 쓰지 않고 객체를 기준으로 데이터를 다루는 것 스프링 부트 별도의 웹 서버를 설치하지 않아도 됨 스프링과 외부 라이브러리 자동 구성 단독으로 실행할 수 있는 스프링 Application을 쉽게 생성 핵심 컨셉 : 스프링은 자바 언어 기반의 프레임워크 - 객체 지향 언어 스프링은 좋은 객체 지향 ..

Framework/Spring

Spring Boot Swagger 연동 에러 해결하기

Item 클래스의 도메인부터 서비스, Test 코드까지 작성 후 Swagger와 연동하여 Request를 요청해보았다. 처음으로 뜬 에러는 ItemPhoto에 대한 flushing문제 Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - ..

Framework/Spring

스프링 부트 MySQL 네이버 클라우드 원격 서버 DB 연결하기

로컬에서 작업하다 팀원 간의 DB 공유가 필요할 것 같아, 네이버 클라우드에서 원격 서버를 파서 DB를 옮기기로 하였다. 윈도우 서버로 구매하였고, 공인IP도 옵션으로 추가하였다 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://공인IP주소:원격서버 MySQL포트/DB이름?serverTimezone=UTC&characterEncoding=UTF-8 spring.datasource.username=root spring.datasource.password=DB비밀번호 spring.jpa.database=mysql spring.jpa.hibernate.ddl-auto=update sprin..

Framework/Spring

Data JPA를 이용한 상품 구매 사이트 Item 엔티티 개발 예제

개발의 편의성을 위해서 순수 JPA에서 Data JPA로 개발 방법을 옮겼다. * 추가 요구사항 - 카트 : 아이템 = 다 : 1 연관관계 추가하기 0. 개발환경 설정 build.gradle compile('org.springframework.boot:spring-boot-starter-data-jpa') 1. Item.java package springstudy.spring.domain; import lombok.Getter; import lombok.Setter; import javax.persistence.*; import java.util.ArrayList; import java.util.List; @Entity @Table(name = "item") @Getter @Setter public cl..

MINGYUM
'Framework/Spring' 카테고리의 글 목록 (3 Page)