본문 바로가기

6

Parameter 0 of constructor in 컨트롤러 클래스 required a bean of type '클래스 이름' that could not be found. 스프링 에러 빈이 정상적으로 등록되지 않았을때 발생하는 문제다. 문제 원인은 대부분 다음과 같다. 1. @Service, @Repository 같은 어노테이션을 안붙임. 2. @Component 을 붙여주거나 직접 @Configruation 클래스에서 @Bean 어노테이션을 이용해 빈으로 등록 3. Application 실행 클래스 하위 패키지에 빈 클래스를 생성 -> 내 케이스 나는 3번의 케이스, 즉, @ComponentScan 대상이 아닌 패키지에 클래스를 생성한 것이 문제였다. 2024. 1. 27.
(7)의존 관계 주입 의존 관계 주입의 4가지 방법 의존 주입에는 4가지 방법이 존재한다. 1. 생성자 주입 2. 수정자 주입(setter 주입) 3. 필드 주입 4. 일반 메서드 주입 1. 생성자 주입 생성자 함수를 통한 주입 방법으로, 주입받는 의존관계 객체가 코드가 진행되는 동안 불변하며 필수적일 경우 사용한다. public class TowAlphabet { private final Alphabet first; private final Alphabet second; @Autowired public TowAlphabet(Alphabet a, Alphabet b) { first = a; second = b; } } 만약 생성자가 딱 1개만 있으면 @Autowired를 생략해도 자동주입이 된다. public class To.. 2023. 5. 22.
(5) 스프링 컨테이너 - 싱글톤 스프링은 태생적으로 웹 어플리케이션에 특화되어 있는데, 웹 어플리케이션은 보통 같은 요청이 동시다발적으로 들어오곤 한다. 만약 100명의 고객이 동일한 요청을 한다고 가정해보자. 그러면 동일한 역할을 하는 객체를 100개를 생성하게 될 것이다. 그런데 그 요청이 모든 고객에게 공통적인 사항이라면 (ex - 공지사항 출력, 판매 상품 출력 등) 100개의 객체를 생성하는 것보다 1개의 객체를 100명이 공유하는게 메모리 측면에서 더 효율적일 것이다. 즉, 싱글톤을 사용해야 한다. 순수 싱글톤 만들기 자바 코드를 사용하지 않고 싱글톤 패턴을 만들수 있다. 핵심은 아래와 같다. 1. static키워드를 사용해서 미리 자신의 인스턴스를 만들어두고, final키워드를 더해 재할당이 안되도록 만든다. 2. 매개변수.. 2023. 5. 14.
(4) xml을 통한 빈 등록과 BeanDefinition 빈을 XML로도 등록이 가능하다, 이는 매우 귀찮고 최근에는 사용하지 않는 한물간 방식이다. 따라서 등록 원리에 대해서만 간단하게 설명하고 넘어가도록 하겠다. ApplicationContext ac = new GenericXmlApplicationContext("appConfig.xml"); AnnotationConfigApplicationContext() 처럼 GenericXmlApplicationContext를 사용해 xml파일을 넘기면, 해당 파일 내부에서 Bean으로 등록하도록 설정한 클래스들이 빈으로 등록된다. 아래의 xml파일을 보자. id 는 빈이 등록되는 이름, class는 빈으로 등록할 클래스의 경로가 된다. 만약 빈으로 등록하려는 객체가 생성자 함수를 통해 매개변수를 주입받아야 하면 다.. 2023. 5. 10.