Spring
■ 스프링 프레임워크(Spring Framework)는 자바에서 가장 많이 사용되는 프레임워크이다.
1) 중요 요소
(1) 의존성 주입(DI, Dependency Injection)
- Spring Framework 에 의존성을 주입하면서 객체 간 결합을 느슨하게 한다.
- 코드의 재사용성이 증가하고 단위 테스트가 용이하다.
(2) 제어역전(IOC, Inversion of Control)
- Servlet이나 Bean 의 설정을 프레임워크가 대신 수행한다.
(3) 관점 지향 프로그래밍(AOP)
2) 대표적인 모듈
- Spring JDBC
- Spring MVC
- Spring AOP
- Spring ORM(Object-Relational Mapper)
- Spring Test
- Spring Expression Language(SpEL)
SpringBoot
■ 스프링 프레임워크(Spring Framework)는 자바에서 가장 많이 사용되는 프레임워크이다.
1) 제공 기능
(1) 스프링 부트는 자동 설정을 이용한다.
- 어플리케이션 개발에 필요한 모든 디펜던시(Dependency)를 프레임워크에서 관리
○ SpringBoot Project Starter Dependency
- Spring Boot Starter Web Service : SOAP 웹 서비스
- Spring Boot Starter Web : RESTful 응용 프로그램
- Spring Boot Starter Test : 단위 테스트, 통합테스트
- Spring Boot Starter JDBC : 기본적인 JDBC
- Spring Boot Starter Security : 스프링 시큐리티 (인증,권한)
- Spring Boot Starter Data Jpa : Spring Data JAP(Hibernate)
- Spring Boot Starter Cache : 캐시
- jar 파일이 클래스 패스에 있는 경우 스프링 부트는 Dispatcher Servlet으로 자동 구성
- 스프링 부트는 미리 설정되어 있는 Starter 프로젝트를 제공
→ 디펜던시를 호환되는 버전으로 관리하는 복잡함을 줄이기 위해 Springboot-Starter를 제공하여 자동으로 버전 관리
- xml 설정 없이 자바 코드를 통해 설정 가능
2) 편리한 배포
Spring Boot는 Tomcat이나 Jetty 같은 내장 WAS를 가지고 있기 때문에 jar 파일로 간편하게 배포할 수 있다.
3) AutoConfiguration
(1) @SpringBootApplication
- 가장 기본적인 설정을 선언해준다. ( @ComponentScan과 @EnableAutoConfiguration )
(2) @ComponentScan
- @Component, @Controller, @Repository, @Service라는 어노테이션이 붙어있는 객체들을 스캔해 자동으로 Bean에 등록해준다.
(3) @EnableAutoConfiguration
- @ComponentScan 이후 사전에 정의한 라이브러리들을 Bean에 등록해줍니다.
- 사전에 정의한 라이브러리들 모두가 등록되는 것은 아니고 특정 Condition(조건)이 만족될 경우에 Bean으로 등록합니다.