날아라쩡글이의 블로그입니다.
Spring framwork 본문
728x90
반응형
한마디로 정의하면 객체를 생성하는 공장, 생성된 객체를 조립하는 어셈블러이다.
- 어셈블러 : 기계어 형태로 오브젝트 코드를 해석해주는 컴퓨터 언어번역 프로그램
객체를 생성하고 조립하는 공장이 spring이다.
- 우리는 지금까지 표현계층, 서비스계층, 영속화계층에서 클래스를 사용할 때는 new라는 키워드로 생성했다.
- 소스파일, 다시코딩하면 다시 컴파일을 진행했다.
- DB시스템 종류에 따라서 혹은 클라이언트의 통신방법에 따라서 업무로직이 변경되는데, 여러 곳에서 사용시 종류가 달라서 유지보수가 힘들다는 단점이 존재했다.
- 어느패키지에서 어느 클래스를 생성할 껀지, spring에게 알려주면 환경 설정 파일을 통해 어떤 패키지 인지 명시를 하면, 자바클래스를 읽어서 객체를 생성하게 된다.
- 이를 spring 환경설정파일에 주문을 넣고, spring에서는 모든 객체를 생성하고 보관하게 된다.
- 이것을 bean factory (spring 객체 공장)이라고 한다.
- 객체를 생성하는 공장으로 의뢰를 하고, 앞으로는 모든 객체 생성을 위임한다.
- 그럼 어떻게 의뢰하고, 클래스를 어떻게 만드는 지 알아보자
- spring은 bean factory의 구현체이다.
- spring은 container, context이다.
- context라는 단어가 붙으면 객체를 담고 있는, 보관 하는 공장이다.
- application context interface를 구현하고 있는 spring container class에서 설정 정보를 읽고, 경로를 읽어서 클래스를 생성하고 보관하고 있다.
- 객체생성하고, 보관하는 작업이 첫번째 작업으로 spring의 container객체라고 한다.
- spring의 핵심이다.
- spring container에는 객체 반드시 1개이상있다.
- spring class들은 모두 scan해서 생성하고 보관한다.
- spring의 Container는 framwork의 객체이다.
- 객체 생성을 하면, 객체를 묶어주는 조립을 지원한다. 이것을 bean wiring이라고 한다.
- 우리는 항상 컨트롤러를 작성하면
- class sampleController{
SampleService service = new sampleService();
public String execute(HttpServletRequest request, HttpServletResponse response){
//요청 파라미터 조회
//업무 로직 수행 => service.업무로직메소드();
//데이터 획득
//데이터를 jsp에 전달한다. =>request.setAttribute
//내부 이동할 뷰 페이지를 반환한다.
return "home.jsp";
}
} - 이런 형태로 작성했다.
- 이제는 빨간색으로 색칠한 부분을
- class sampleController{
@Autowired
SampleService serviceSampleService service = new sampleService();
public String execute(HttpServletRequest request, HttpServletResponse response){
//요청 파라미터 조회
//업무 로직 수행 => service.업무로직메소드();
//데이터 획득
//데이터를 jsp에 전달한다. =>request.setAttribute
//내부 이동할 뷰 페이지를 반환한다.
return "home.jsp";
}
}- 이렇게 작성하고 사용할 것이다.
- @Autowired라는 어노테이션을 붙여서 연결시켜준다.
- 앞으로 객체 생성, 조립을 spring에게 위임한다.
- sampleService는 인터페이스로 만든다.
그래서 sampleService로 구현한 sampleServiceBasicImpl.java가 존재하는데,
sampleService를 직접 호출하지 않고, sampleServiceBasicImpl를 호출하는 것이다.
그런데 새로운 것으로 만들고 sampleServiceBasicImpl을지우고 samleServiceExpertImpl.java을 생성하면
자동으로 연결해준다.
소스코드를 바꾸지 않아도 expert만 있으면 변경되게 수정할 필요는 없다. - 객체를 만들고, 객체 안에 있는 어노테이션을 분석한다.
- spring안에는 다양한 프로세스가 존재한다.
- @Aurowired
- 생성자, 매소드, 매개변수등에 어노테이션이 부착되어 있는지 확인한다. 있으면 매개변수를 확인하고, spring이 만들고 보관하고 있는 객체중에 해당객체가 있는지 확인하고, 있으면 대입한다. 그것을
bean wiring이라고 한다. spring이 알아서 대입하고, 조립해주는 것을 의미한다. - spring @Autowired를 붙여서 해당 객체에 대입하는 것을 오토와이어드어노테이션프로세스로 생성객체중에서 어노테이션이 감지하는 것을 의미한다.
- 생성자, 매소드, 매개변수등에 어노테이션이 부착되어 있는지 확인한다. 있으면 매개변수를 확인하고, spring이 만들고 보관하고 있는 객체중에 해당객체가 있는지 확인하고, 있으면 대입한다. 그것을
- 컨테이너는 생성하는 공장, 보관하는 공장, 조립하는 공장이라고 이해하면 된다.
반응형
'중앙 HTA (2106기) story > spring java framwork story' 카테고리의 다른 글
spring framwork설명 (0) | 2021.12.27 |
---|---|
의존성 주입 (DI) 자동 주입 (0) | 2021.12.27 |
전자전부표준프레임워크 (0) | 2021.12.27 |
의존성 주입 (Dependency Injection: DI),setter주입 (0) | 2021.12.24 |
spring tool (0) | 2021.12.23 |
Comments