본문 바로가기
728x90

스프링4

Dependency Injection(의존성 주입) - 어노테이션 XML Configure 파일에 등록하지 않고 자동으로 생성하려면 엘리먼트를 정의해주어야 한다. 이 엘리먼트를 추가하면 스프링 컨테이너는 classpath에 있는 클래스들을 스캔하면서 @Component가 설정된 클래스들을 자동으로 객체 생성한다. 위의 소스를 보면 엘리먼트의 base-package속성을 "com.spring.example"으로 지정해주었는데 이 의미는 "com.spring.example"로 패키지로 시작하는 모든 패키지를 스캔하라는 의미이다. @Component("pet") public class Pet { public Pet() { /* default construct */ } } Pet클래스의 기본생성자를 생성해야 스프링컨테이너가 Pet클래스를 메모리에 생성을 할 수 있고 스프링컨테.. 2020. 3. 26.
DI(Dependency Injection)이란? Dependcy Injection: DI를 우리말로 번역을 하면 보통 "의존성 주입"이라는 말로 번역을 한다. 여기서 "의존성 주입"을 이해하기 위해 "의존성"과 "주입"을 나누어 생각해 보겠다. "의존성(Dependency)"이란, 예를 들어 Pet이라는 객체가 Animal이라는 객체를 참조하고 있다면 Pet객체는 Animal객체에 의존성을 가진다고 한다. 예제 코드를 보면 public class Pet { private Animal animal; .. .. animal = new Animal(); /* 중략 */ } Pet클래스의 필드에 Animal타입의 animal변수를 멤버변수로 가지고 있으며 Pet객체는 Animal객체를 참조하고 있는 것이다.(의존성을 가진다) 위의 코드처럼 한 객체가 다른 객.. 2020. 3. 26.
SPRING bean life cycle 스프링컨테이너는 빈 객체를 생성하고 프로퍼티를 할당하고 초기화를 수행하고 사용이 끝나면 소멸시키는 과정을 관리하게 된다. 과정은 다음과 같다. Bean객체를 생성한 후 Bean Property 설정한 뒤에 BeanNameAware.setBeanName()메서드를 호출하게 되는데 생성된 Bean이 BeanNameAware인터페이스를 구현하고 있을 경우 setBeanName()메서드를 호출하고 ApplicationContextAware인터페이스를 구현하고 있는 경우 setApplicationContext()메서드를 호출한다. 위 그림의 전체적인 흐름을 보게되면 [객체생성/프로퍼티설정 -> 초기화 -> 사용 -> 소멸] 단계를 거치게 된다. 빈의 초기화와 소멸 방법은 각각 세 가지가 존재한다. 각 방식이 쌍을.. 2020. 3. 25.
Controller에서 json으로 객체 변환 불가 에러. 스프링 게시판 구현 중, db에 저장된 댓글을 불러올 때 아래와 같은 에러가 발생하여 구글링을 해본 결과. pom.xml에 com.fasaterxml.jackson.core dependency를 추가해주고 mvc:message-converters를 추가해준 뒤 에러가 해결되었다. 2020. 3. 19.
728x90
반응형

`