Today I Learned - 37
Spring - 1
- 스프링 프레임워크 시작
- 스프링 의존성 주입 & 제어 역전
스프링 프레임워크
- 프레임워크,
- 기능을 미리 클래스, 인터페이스 등으로 만들어 제공하는 반제품!
- 개발 생산성과 품질이 보장됨
- 개발 후 유지보수 및 기능 확장성도 보장
- 스프링 프레임워크(이하 스프링)
- 스프링은 자바 WEB APP 개발을 위한 ‘오픈 소스 프레임워크’
- EJB(Enterprise Java Bean) 보다 가벼운 ‘경량 프레임워크’
- 스프링 특징
- 제어 역행(IoC, Inversion of Control)
: 서블릿, 빈 등을 개발자가 코드에서 생성하는 것이 아닌 프레임워크가 직접 수행
- 의존성 주입(DI, Dependency Injection)
: 클래스 객체를, 개발자가 아닌 프레임워크가 생성하여 사용
- 관점 지향(AOP, Aspect-Oriented Programming)
: 핵심 기능 외 부가 기능들을 분리 구현하여, 모듈성 증가시키는 방법
- 영속성과 관련된 서비스 지원
- 제어 역행(IoC, Inversion of Control)
- 주요 기능
스프링 기능 | 설명 |
---|---|
Core | 다른 기능과 설정을 분리하기 위한 IoC 기능 제공 |
Context | 애플리케이션의 각 기능을 담당하는 빈(Bean)에 대한 접근 방법 제공 |
DAO | JDBC 기능을 좀 더 편리하게 사용 |
ORM | 하이버네이트, 마이바티스 등 영속성 관련 프레임워크와 연동된 기능 제공 |
AOP | 관점 지향 기능 제공 |
Web | 웹 애플리케이션 개발에 필요한 기능 제공 |
WebMVC | 스프링에서 MVC 구현에 관련된 기능 제공 |
스프링 의존성 주입 & 제어 역전 - 1. 의존성 주입
- 의존성 주입
- 연관 관계를 개발자가 코딩을 통해 클래스에 부여하는 것이 아닌, 컨테이너가 규정하는 것
- 코드에서 직접적인 연관 관계가 발생하지 않으므로, 각 클래스들의 변경이 자유로움!
- = 약한 결합, loosely coupled
- 강한 결합은, 서로 관련있는 기능들끼리!
- 의존성 주입 장점
- 클래스 간의 의존 관계 최소화 => 코드 단순화
- 객체의 생성, 소멸과 객체간의 의존 관계를 컨테이너가 제어!
- 의존성 주입 방법
- 생성자에 의한 주입
- setter에 의한 주입
스프링 의존성 주입 & 제어 역전 - 2. 의존성 주입 실습
- person.xml
<bean>
태그- PersonServiceImpl 객체(빈) 생성
- id 속성 = personService로 지정
- PersonServiceImpl 객체
- name 속성 = ‘홍길동’으로 초기화
- name 속성 = ‘홍길동’으로 초기화
- PersonService.java
- PersonServiceImpl.java
<value>
태그의 값을 setter를 이용해 설정
- PersonTest.java
- 실행 시 person.xml 읽어 와서, 빈 생성
- id 가 ‘personService’ 인 빈을 가져옴
- 생성된 빈을 이용해 name 값 출력
객체를 직접 생성하는 부분 주석처리!
- 참고! 파일트리
Spring 과제 - PDF 자료 실습
- 범위
- 수업자료 18 ~ 19장
-
기한: ~6/5(일)
- 과제 예시
- 수업자료 참고, 프로젝트 추가 생성
ex.
Spring_pro19_Homework
- lib 자료 copy
- xml 파일 복습
ex.
<bean>
요소 변경 or 추가 - 각 코드 복습
교재 참고, 예제 추가로 작성
- 수업자료 참고, 프로젝트 추가 생성