공부/Spring 사용한 프로젝트
-
TIL 47일 - DAO, DTO(Repository 랑 같은가?)공부/Spring 사용한 프로젝트 2022. 2. 14. 15:41
DAO DAO는 Data Access Object의 줄임말이다. 실질적으로 DB에 접근하는 객체를 말한다. DB를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 객체를 말한다. 실제로 DB에 접근하는 객체 Repository와의 비교 DAO는 data persistence의 추상화, Repository는 collection of objects의 추상화이다. DAO는 데이터베이스와 관련이 많으며 Table 중심이고 Repository는 도메인과 관련이 많으며 Arggregate roots만을 다룬다. Repository는 여러 DAO를 사용해 구현될 수 있지만 그 반대는 불가능하다고 함 근데 Repository가 DAO라고 설명하는 글들도 많다. DTO DTO는 Data Transfer Obj..
-
TIL 46일 - 스프링 유닛 테스트공부/Spring 사용한 프로젝트 2022. 2. 13. 16:21
실제로 사용되는 로직 사용하기 package com.example.springjpa; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import static org.junit.jupiter.api.Assertions.*; @SpringBootTest class ApiControllerTest { @Autowired AdminRepository adminRepository; @Test public void getAdmin() throws ResourceNotFoundExc..
-
TIL 45일 - 빈 스코프 오버뷰공부/Spring 사용한 프로젝트 2022. 2. 12. 22:06
빈 스코프 빈 정의를 생성할 때, 빈정의에 의해 정의된 클래스가 생성된 실질적인 인스턴스에 대한 레시피를 생성한다. 빈 정의가 레시피라는 아이디어는 매우 중요하다, 때문에 이것은 클래스와 마찬가지로 하나의 레시피에서 여러 오브젝트 인스턴스가 생성할 수 있다는 것을 의미한다. 특정 빈 정의로부터 생성된 객체로 plugged된 다양한 종속성과 configuration 값들 뿐만 아니라 특정 빈 정의로부터 생성된 객체의 스코프 제어 또한 컨트롤 할 수 있다.이 접근은 파워풀하고, 유연하다. 때문에 객체의 스코프를 자바 클래스 레벨에서 작성하는 대신 configuration을 통해 생성된 객체의 스코프는 선택할 수 있다. 빈들은 빈들은 다양한 스코프 중에 하나로 정의될 수 있다. 스프링 프레임워크는 6개의 스코..
-
TIL 44일 - 종속성공부/Spring 사용한 프로젝트 2022. 2. 11. 18:58
종속성 전형적인 엔터프라이즈 어플리케이션은 하나의 객체로 구성되지 안흔다. 가장 간단한 어플리케이션이라고 해도 함께 작동하는 적은 객체를 가진다. 이 다음 섹션에서는 어떻게 빈정의를 하는지 설명한다. /* 생략 많음 */ 종속성 주입 종속성 주입은 객체들이 종속성을 객체가 정의하는 프로세스이다. 이런 방법으로는 생성자 파라미터, 팩토리 메서드에 대한 파라티머, 팩토리 메서드로부터 생성되거나 반환된 개겣 인스턴스에 설정된 property를 통해서 이뤄진다. 이런 다음 컨테이너는 빈이 생성될 때 이런 종속성들을 주입한다. 이 프로세스는 근본적으로 빈 자체의 제어하는 것의 역전이다. 코드는 DI 원리 덕분에 더 깨끗해진다. 그리고 디커플링은 객체가 그들의 종속성으로 제공될 때 더 효과적이다. 객체는 이것의 종..
-
TIL 43일 - 빈 인스턴스화공부/Spring 사용한 프로젝트 2022. 2. 10. 22:35
빈 인스턴스화 근본적으로 빈 정의는 하나 혹은 그 이상의 객체를 어떻게 생성할 것인가에 대한 레시피이다. 컨테이너는 실질적인 객체를 생성하기 위한 빈 정의에 의해 캡슐화된 configuration metadat를 요청되거나 사용할 때 이름이 있는 빈의 레시피를 바라본다. 만약 XML 기반 configuration metadata를 사용한다면, 요소의 class attribute 안에 인스턴스화된 객체의 타입이나 클래스 명시한다. 이 class attribute는 보통 의무적이다. class property를 두 가지 방법 중 하나로 사용할 수 있다. - 일반적으로 컨테이너 자체가 반사적으로 생성자를 호출하여 빈을 직접 생성하는 경우에 생성될 빈 클래스를 지정하며, 이는 새로운 연산자를 사용하는 자바 코..
-
TIL 42일 - 빈 오버뷰, 빈 이름 지정공부/Spring 사용한 프로젝트 2022. 2. 9. 18:27
빈 오버뷰 스프링 IoC 컨테이너는 하나 혹은 그 이상의 빈을 관리한다. 이러한 빈들은 컨테이너에 제공한 configuration metadat로 인해 생성된다. 컨테이너 자체 안에서 이러한 빈 정의들은 BeanDefinition 객체로 나타난다. 이런 객체들은 아래 메타데이터들을 포함한다. - package-qualified 클래스 이름: 일반적으로, 정의된 빈들의 실제 구현 클래스 - 빈 behavioral configuration 요소는 어떻게 빈들이 컨테이너 안에서 행동해야 하는지를 나타낸다. - 다른 빈들에 대한 References, 다른 빈들은 동작하기 위해서 다른 빈들을 필요로 한다. 이런 references들은 collaborators 혹은 dependencies라고 한다. - 다른 con..
-
TIL 41일 - IoC Container - 컨테이너 인스턴스화, 컨테이너 사용하기공부/Spring 사용한 프로젝트 2022. 2. 8. 14:54
컨테이너 인스턴스화 ApplicaitonContext 생성자에 파라미터로 사용되는 location path 혹은 paths는 리소스 문자열입니다. 이 문자열 리소스를 통해서 컨테이너가 configuration metadata를 로컬 파일 시스템, 자바 CLASSPATH 등등의 다양한 외부 소스로부터 로드하게 합니다. ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml"); 아래 예제는 서비스 레이어 객체를 보여준다 아래 예제는 데이터 액세스 객체를 보여준다. 앞서본 예시에서, 서비스 레이어는 PetStoreServiceImpl 클래스와 두개의 JpaAccountDao, JpaItemDao 타입의 ..
-
TIL 40일 - IoC Container(2)공부/Spring 사용한 프로젝트 2022. 2. 7. 23:35
컨테이너 오버뷰 org.springframework.context.ApplicationContext 인터페이스는 IoC 컨테이너를 대표한다. 그리고 인스턴스화, 설정, 빈 조립에 책임이 있다. 이 컨테이너는 configuration 메타데이터를 통해서 객체에 대한 인스턴스화, 설정, 조립에 대한 지침을 얻는다. configuration 메타데이터는 XML, 자바 어노테이션 혹은 바자 코드를 통해 나타난다. 메타데이터는 어플리케이션을 구성하는 객체를 표현하고, 그런 객체들 사이에서 풍부한 상호의존을 표현한다. ApplicationContext 인터페이스의 몇몇 구현은 스프링에게 제공받는다. 독립적인 어플리케이션에서, ClassPathXmlApplicationContext 혹은 FileSystemXmlApp..