npm config set legacy-peer-deps true
npm i

 

 

legacy-peer-deps 

요약:
NPM v6/Node v12에서 업그레이드하는 경우 이 답변에 도달할 수 있습니다.

NPM v7+는 기본적으로 peerDependencies를 설치합니다. 이전 버전의 NPM에서는 그렇지 않습니다.
NPM 모듈은 peerDependencies의 특정 버전에 이름을 지정해야 합니다.
peerDependency가 이미 설치되어 있지만 모듈에 의해 명명된 버전이 아닌 경우 NPM v7+에서 오류가 발생합니다.
--legacy-peer-deps를 추가하면 주요 변경 사항이 도입될 위험이 있으므로 이 새로운 요구 사항을 무시합니다.
--legacy-peer-deps는 NPM v4에서 v6까지 peerDependency 설치 동작을 복원합니다.
이 플래그를 생각하는 한 가지 방법은 새로운 작업을 수행하지 않는다는 것입니다. 오히려 NPM v7이 이제 기본적으로 peerDependencies를 설치하기 때문에 NPM에게 새로운 작업을 수행하지 말라고 지시합니다.

대부분의 경우 이로 인해 버전 충돌이 발생하여 설치 프로세스가 중단됩니다.

--legacy-peer-deps 플래그는 v7에서 peerDependency 자동 설치를 우회하는 방법으로 도입되었습니다. NPM에 피어 deps를 무시하고 설치를 계속 진행하도록 지시합니다. 이것은 NPM v4에서 v6까지 사용했던 방식입니다.

 

 

 

 

참고 사이트

https://stackoverflow.com/questions/72596908/could-not-resolve-dependency-error-peer-react16-8-0-17-0-0-from-materia

 

 

'Study > React & Node.js' 카테고리의 다른 글

노드 리액트 기초 - 7th Day (2)  (0) 2021.08.01
노드 리액트 기초 - 7th Day (1)  (0) 2021.07.30
노드 리액트 기초 - 6th Day  (0) 2021.07.20
노드 리액트 기초 - 5th Day  (0) 2021.04.02
노드 리액트 기초 - 4th Day  (2) 2021.04.02

 

IoC의 개념

  • IoC(Inversion of Control, 제어권의 역전)이란 객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미한다.
  • 자주 사용하는 객체들을 미리 메모리에 올려 놓고, 클라이언트에서 해당 객체를 요청해오면 객체를 빌려준 후 소멸 시키지 않고 재활용
  • 스프링 컨테이너: IoC 개념을 구현하기 위해서 사용됨
  • 컴포넌트 의존관계 결정(component dependency resolution), 설정(configuration) 및 생명주기(lifecyle)를 해결하기 위한 디자인 패턴(Design Pattern)

 

 

IoC 컨테이너

  • 스프링 프레임워크도 객체에 대한 생성 및 생명주기를 관리할 수 있는 기능을 제공하고 있음. 즉, IoC 컨테이너 기능을 제공한다.
  • IoC 컨테이너는 객체의 생성을 책임지고, 의존성을 관리한다.
  • POJO의 생성, 초기화, 서비스, 소멸에 대한 권한을 가진다.
  • 개발자들이 직접 POJO를 생성할 수 있지만 컨테이너에게 맡긴다.
  • 요청이 많은 애플리케이션에서는 컨테이너를 사용하지 않으면 부하가 걸릴 수 있다.

 

 

IoC 컨테이너 종류

  • 피코 컨테이너, Pico Container
  • 구글 주스 컨테이너, Guice Container

 

 

IoC 분류

1) DL (Dependency Lookup): 의존성 검색

저장소에 저장되어 있는 Bean에 접근하기 위해 컨테이너가 제공하는 API를 이용하여 Bean을 Lookup하는 것

(클라이언트에서 객체 타입이나 아이디를 통해 컨테이너에서 필요한 객체를 찾는 것)

 

2) DI (Dependency Injection): 의존성 주입

각 클래스간의 의존관계를 빈 설정(Bean Definition) 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것

(빈 설정 파일 > XML)

 

※ DL 사용 시 컨테이너 종속성이 증가하여 주로 DI를 사용함 (Setter, Constructor, Method Injection)

 

 

Spring IoC 관련 용어

Managed Bean

  • 스프링 컨테이너에 의해서 관리되는 객체
  • 스프링 빈 이라고도 함
  • 스프링 설정파일에 <bean> 태그로 등록되어 사용
  • Annotation으로 자동 등록 기능(Component Scan) 사용 가능

 

Spring Container

  • 관리되어지는(managed) 빈이 모여 있는 곳
  • IoC 컨테이너로써 Application Context 클래스로 구현됨
  • Context라는 용어가 들어 있으면 Bean이 모여서 관리되는 컨테이너를 의미

 

 

 

실습

1. TestDAO 작성

  -  패키지 생성

 

 

  -  HelloDAO.java 클래스 생성

 

 

  -  HelloMain.java 클래스 생성

 

 

 

2. TestDAO 빈컨테이너에 등록

  -  스프링 설정 파일 생성

 

 

 

3. TestDAO DL로 사용

  -  getBeanLookup을 지원

 

 

 

 

Summary

  • 스프링은 스프링 컨테이너에 빈(자바 객체)을 로딩하여 관리한다.
  • 빈을 자동으로 관리해주는 기능(IoC)은 스프링의 핵심 기능 중 하나이다.

 

 

 

 

 

 

STS로 스프링 프로젝트 생성

  • Dynamic Web Project 생성
  • Dynamic web module version 3.1로 설정
  • Apache Tomcat 8.0 설치 후 설정
  • 소스 디렉토리의 경로를 Maven Convention에 맞게 수정
    • Maven은 test를 중요시, TDD를 지원함

 

  • Eclipse 내장 Maven Plugin .. Maven Project로 전환

 

 

 

 

실습

 

1. 프로젝트 생성

 

 

2. 메이븐 프로젝트로 변경

 

 

3. 스프링 프로젝트로 변경

 

 

4. 메이븐 프로젝트 업데이트

 

 

5. 애플리케이션 build 및 톰캣 서버에 deploy

 

 

 

 

Summary

  • 메이븐은 CoC(Convention over Configuration) 철학을 갖고 있어 설정된 포맷을 지켜줘야 한다.
  • 메이븐 프로젝트는 프로젝트 루트에 pom.xml 파일이 있다.

 

 

 

'Study > Spring' 카테고리의 다른 글

[Spring] 우체국 우편번호 API 적용  (0) 2023.06.14
[Spring] 4. IoC  (0) 2023.02.22
[Spring] 2. 스프링과 메이븐  (0) 2023.02.16
[Spring] 1. 스프링 프레임워크 개요  (0) 2023.02.16

+ Recent posts