KoreanFoodie's Study

자바 Spring FrameWork #1 : 기초 개념과 IoC, Injection, Annotation 본문

Tutorials/Spring Framework

자바 Spring FrameWork #1 : 기초 개념과 IoC, Injection, Annotation

GoldGiver 2021. 11. 22. 17:01

Spring Framework 명강사이신 채규태님의 강좌를 듣고 핵심 용어들을 정리한 글입니다.


꼭! 알아야 할 개념

  1. IoC : Inversion of Control
  2. AOP : Aspect Oriented Programming
  3. MVC : Model-View-Controller
  • Java, JDBC, HTML, Servlet/JSP

 

프레임워크

프레임워크는 뼈대이다. 뼈대는 바꾸는 것이 아니라 이용하는 것이다. 하나의 틀이라고 봐도 됨

메타 데이터는 주로 XML.

아키텍처에 해당하는 클래스를 콜드 스팟(Cold Spot) 이라고 하며, JAR(Java Archive) 파일을 의미한다.

 

POJO(Plaing Old Java Object)란?

POJO란 말 그대로 평범한 옛날 자바 객체를 의미한다.
대표적인 Not POJO 클래스가 Servlet이나 EJB 클래스다.
Servlet 클래스는 우리 마음대로 만들 수 없으며,
반드시 Servlet에서 요구하는 규칙에 맞게 작성해야 한다.
그리고 중요한 것은 POJO가 아닌 클래스의 객체는 메모리 사용이 많아 무겁다.

 

Servlet Container?

Servlet Container는 누가 생성하나? : 톰캣

서버를 실행한다는 건 톰캣 객체를 생성한다는 것.
Servlet Container가 실행될 때 web.xml을 불러온다.
브라우저가 우리가 만든 hello.do를 호출하면

 

IoC

Servlet 객체는 lazy loading : 클라이언트가 요청을 하기 전까지 실행을 하지 않는다.
Spring Container : Pre-Loading. 컨테이너가 구동되는 시점에 메모리에 로딩되는 객체.
우리는 코드를 수정하지 않고 XML만 수정해서 원하는 유지 보수를 쉽게 할 수 있다.

 

Injection

Injection이라 함은 간략화하자면 xml 파일에서 <bean> 객체를 이용해 생성자나 메서드들을 호출해주는 것을 말한다.

 

크게 세 가지 종류가 있다.

 

Constructor Injection
Setter Injection -> Recommended!
Namespace Injection

 

만약 객체를 만들 때 각각 다른 매개변수가 필요한 경우가 있다고 하자. 그럴때는 빈 객체를 만들고 내부 field 값은 setter를 통해 원하는 변수만 제대로 설정해 주는 것이 더 나을 것이다.

 

Annotation

XML 소스를 수정하는 것은 좋지만... 10000줄짜리 XML이 만들어진다면...?
Annotation을 이용해 xml이 자동으로 @이 붙은 객체를 검색하고 생성해 줄 수 있다.
유지보수 과정에서 변경되지 않는 객체는 Annotation으로 생성한다.

 

@Autowired, @Qualifier("ID"), @Resource(name = "ID") 등을 기억하자.
하지만 @Qualifier도 계속 수정을 해주어야 한다. 따라서 잘 안씀...

 

유지보수 과정에서 변경되는 객체를 하나만 생성하기 위해서는 bean 등록을 사용한다!
@AutoWired 만 활용하고, XML에서 실제 사용할 객체만 bean class로 생성하면 됨.

 

Error

No matching bean of type : 가장 많이 뜨는 에러 (90%)
해당 타입에 맞는 객체가 없다는 뜻

Comments