3. Spring Framework 란?
• 1.0 : 2004년 3월
• 2.0 : 2006년 10월
• 2.5 : 2007년 11월
• 3.0 : 2009년 12월
• 3.1 : 2011년 12월
• 4.0 : 2013년 12월
• 5.0 : 2017년 9월
주요 버전 이력
자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서
엔터프라이즈급 애플리케이션을 개발하기 위한 모든 기능을
종합적으로 제공하는 경량화된 솔루션
⟹ Apache 2.0 라이선스
⟹ 인프라 지원을 제공하여 개발자는 개발에만 집중
⟹ 경량화된 컨테이너
4. CGI (Common Gateway Interface)
Servlet/JPA
EJB (Enterprise Java Bean)
Spring
사용자의 동적 데이터 요청 처리의 시초
CGI에서 성능 개선, 객체 지향 개발
Java Bean(객체 재사용), 비즈니스 객체를 관리하는 컨테이너
EJB 없이 객체간 의존성 해결 가능한 컨테이너, POJO
5. Spring Framework 핵심 기술
IoC (Inversion of Control)
• 종속성 주입 (DI)
제어의 역전 : 제어권이 사용자가 아니라 프레임워크에 있도록 한 디자인 패턴
스프링 IoC 컨테이너
빈설정
- IoC 구현을 통해 의존관계 해결을 위한 디자인 패턴
- XML 설정 혹은 애노테이션을 통해 의존성 주입을
쉽게 할 수 있는 방법
6. Spring Framework 핵심 기술
Controller Service DAO
핵심기능1
핵심기능2
핵심기능3
권한 로깅 트랜잭션 로깅
횡단 관심사
AOP (Aspect Oriented Programing)
관점 지향 프로그래밍
: 모듈성을 높일 목적으로 서로 다른 관심사
를 분리(separation of cross-cutting
concerns)하는 프로그래밍 패러다임
• 권한, 로깅, 트랜잭션 등
7. Spring Boot 란?
스프링 프레임워크 기반 프로젝트를 어려운 설정이
나, WAS에 대한 설정 없이 바로 개발에 들어갈
수 있도록 만든 프레임워크이다.
8. Spring Boot 특징
1. 설정의 자동화
스프링 부트는 애플리케이션의 설정을 자동으로 해준다.
@SpringBootApplication 은 @ComponentScan과 @EnableAutoConfiguration 을 포함하고 있다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="userName" class="java.lang.String">
<constructor-arg value="${user.name}"/>
</bean>
</beans>
user.name=techo
• applicationContext-config.xml • application.properties
9. Spring Boot 특징
2. 라이브러리 버전 자동 관리
스프링 부트 버전을 입력하면 스프링 라이브러리뿐만 아니라 서드 파티 라이브러리들도 호환되는
버전으로 자동으로 다운된다.
• build.gadle
10. Spring Boot 특징
3. 내장 Tomcat, Jetty, Undertow
Spring-boot-stater 의존성을 추가하면 @SpringBootApplication이 선언되어 있는 클래스의 main()
메소드를 실행하는 것만으로 서버를 구동시킬 수 있다.
4. 독립적으로 실행 가능한 JAR
내장 Tomcat을 지원하기 때문에 JAR파일로 패키징하여 웹 애플리케이션 실행 가능하다.
11. Spring / Spring Boot
• 수동 설정
• 의존성의 버전을 관리 필요
• 내장 서버 없음
• 자동 설정
• 쉬운 의존성 관리
• 내장 서버
12. 참고 자료
• [스프링 공식 홈페이지] https://spring.io/projects/spring-framework
• [Spring Guides] https://spring.io/guides
• [Spring Github] https://github.com/spring-projects
• [Spring 역사] https://velog.io/@hanblueblue/%EA%B2%8C%EC%8B%9C%ED%8C%90-
%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-SpringMVC-Gradle-MySql-JPA-1.-
Spring%EC%99%80-SpringMVC
• [Spring 기본 개념] https://khj93.tistory.com/entry/Spring-Spring-Framework%EB%9E%80-
%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90-%ED%95%B5%EC%8B%AC-
%EC%A0%95%EB%A6%AC
• [스프링 모듈 구성] https://develop-log-sj.tistory.com/2