본문 바로가기
Study Progamming/Spring

[ 스프링 부트 코딩 공작소 ] 스프링 부트의 핵심 살펴보기 - 자동 구성

by ${코딩몬} 2018. 1. 11.


종류 : 대학교 소장 도서
제목 : 스프링 부트 코딩 공작소
저자 : 크레이 월즈
옯김 : 황인서
소개 : 2017/12/29 - [Study Progamming/Spring] - [ 스프링 부트 코딩 공작소 ] 정리를 시작하며

단지 공부의 목적으로 해당 도서 및 자료를 정리해둔 것입니다.



- 1장 스프링 시작하기 -

스프링 부트의 핵심 살펴보기



자동 구성

  • 어떤 스프링[각주:1] 애플리케이션의 소스 코드에서든 애플리케이션의 특정한 지원 특징과 기능을 활성화하는 자바[각주:2] 구성이나 XML[각주:3] 구성(또는 둥 다)을 볼 수 있다.
  • 예를 들어 JDBC[각주:4]관계형 데이터 베이스[각주:5]에 접속하는 애플리케이션을 작성했다면 아마 스프링 애플리케이션 켄텍스트[각주:6]에 스프링의 JdbcTemplate[각주:7][각주:8]으로 구성했을 것이다.
  • 다음 구성과 비슷하다고 확신한다.
  • 1
    2
    3
    4
    @Bean
    public JdbcTemplate  jdbcTemplate(DataSource dataSource){
        return new JdbcTemplate(dataSource);
    }
    cs


  • 매우 간단한 빈 선언으로 JdbcTemplate 인스턴스를 생성하여 DataSource[각주:9] 의존성을 주입[각주:10]한다.
  • 당연한 말이지만, 이 의존성을 만족하도록 DataSource 빈을 구성해야 한다는 의미다.
  • 이 구성 시나리오를 완료하려고 내장 H2 데이터베이스[각주:11]를 DataSource 빈으로 구성했다고 가정하자.
  • 1
    2
    3
    4
    5
    6
    7
    @Bean
    public DataSource dataSource(){
        return new EmbeddedDatabaseBuilder()
                    .setType(EmbeddedDatabaseType.H2)
                    .addScripts('schema.sql''data.sql')
                    .build();
    }
    cs
     

 

  •  빈(Bean) 구성 메서드는 내장 데이터베이스를 생성하고 내장 데이터베이스에서 실행할 SQL[각주:12] 스크립트[각주:13] 두개를 지정한다.
  • build() 메서드는 내장 데이터베이스를 참조하는 DataSource를 반환한다.


  • 예제 코드에서 보여 준 두 가지 빈 구성 메서드 모두 아주 복잡하거나 길지 않다.
  • 하지만 둘 다 일반적인 스프링 애플리케이션의 구성에서 일부만 보여 준다.
  • 또 예제와 완전히 메서드가 동일한 스프링 애플리케이션이 수도 없이 많다.
  • 내장 데이터페이스와 JdbcTemplate을 사용하는 애플리케이션은 이런 메서드가 필요하다.
  • 즉, 보일러플레이트[각주:14] 구성이다.

  

  • 이런 일이 흔하게 일어난다면 일일이 작성할 필요가 있을까?

 

  • 스프링  부트는 이런 공통 구성 시나리오를 자동으로 구성할 수 있다.
  • 예를 들어 스프링 부트가 얘플리케이션 클래스패스[각주:15] H2 데이터베이스 라이브러리를 발견한다면 내장 H2 데이터베이스를 자동으로 구성할 것이다.
  • JdbcTemplate이 클래스패스에  있다면 JdbcTemplate 빈도 구성할 것이다.
  • 이런 빈을 구성하는 작업은 하지 않아도 되는데 스프링 부트가 빈을 자동으로 구성하여 여러분이 작성한 빈에 주입(Inject)할 준비를 해준다. 

 

  • 스프링 부트에서 내장 데이터베이스와 JdbcTemplate 등 수많은 자동 구성이 있다.
  • 스프링 부트는 구성의 부담을 제거하는 수십 가지 방법을 제공하며, 여기에는 자바 영속성 API(JPA)[각주:16], Thymeleaf[각주:17] 템플릿[각주:18], 스프링 MVC[각주:19] 자동 구성도 포함되어 있다.


  1. 2018/01/03 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] Spring Framework
  2. 2017/12/29 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] Java EE
  3. 2018/01/03 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] XML

  4.  
  5.  
  6.  
  7.  
  8.  
  9. 2017/12/29 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] Dependency Injection

  10.  
  11.  
  12.  
  13.  
  14.  
  15. 2018/01/03 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] Thymeleaf
  16.  
  17. 2018/01/03 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] Spring Framework


  1. 스프링 : Spring Framework, 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 불린다. [본문으로]
  2. Java EE : Java Platform, Enterprise Edition, 자바를 이용한 서버측 개발을 위한 플랫폼이다. [본문으로]
  3. XML : Extensible Markup Language, W3C에서 개발된, 다른 특수한 목적을 갖는 마크업 언어를 만드는데 사용하도록 권장하는 다목적 마크업 언어이다. [본문으로]
  4. JDBC : [본문으로]
  5. 관계형 데이터 베이스 : [본문으로]
  6. 컨텍스트 : [본문으로]
  7. JdbcTemplate : [본문으로]
  8. 빈 : [본문으로]
  9. DataSource : [본문으로]
  10. 의존성 주입 : Dependency Injection, DI, 프로그래밍에서 구성요소간의 의존 관계가 소스코드 내부가 아닌 외부의 설정파일 등을 통해 정의되게 하는 디자인 패턴 중의 하나이다. [본문으로]
  11. H2 데이터베이스 : [본문으로]
  12. SQL : [본문으로]
  13. SQL 스크립트 : [본문으로]
  14. 보일러플레이트 : [본문으로]
  15. 클래스패스 : [본문으로]
  16. 자바 영속성 API : [본문으로]
  17. Thymeleaf : java 라이브러리로 xml, xhtml, html5 문서를 생성하는 템플릿 엔진이다. [본문으로]
  18. 템플릿 [본문으로]
  19. 스프링 MVC : Spring MVC, 스프링 웹 프로그램밍 개발 시 거의 표준적인 방식인 모델-뷰-컨트롤러(MVC) 패턴 [본문으로]