대표 번역가 : 백재영


실리콘밸리를 꿈꾸는 개발자.
현재 LF 플랫폼 개발팀에서 있으며 요즘은 번역의 어려움과 재미를 한창 느끼는 중이다. 


원문 링크





스프링 빈이 진짜 뭘까?


오늘 Spring Boot Application 내부에서 무슨 일이 벌어지고 있는지 이해하려고 하는 중 멘붕이 왔다.


스프링을 처음 접하면서 꽤 많은 시간을 구글링과 문서 읽기에 쏟아부었지만 ‘빈'과 같은 기본적인 개념에 관해서는 사전지식을 전제로 한다고 알고 있었다.


Pivotal의 스프링 팀에 있는 내 친구이자 동료인 Mark Fisher가 내게 찾아와 설명해주는 대신 나는 이것에 대해 글을 쓰기로 약속했다.


그 결과는 지금 보고 있는 이 블로그와 여기에 있다. https://github.com/markfisher/spring-boot-hello-world


태초에 XML이 있었다

스프링은 자바 애플리케이션이 종속된 메인 클래스를 구성하는 데에 J2EE보다 더 간단한 XML 기반의 방식을 제공한다.


단순히 모든 것을 자바의 new를 이용하여 인스턴스화하는 것은 이상적인 것이 아니었다. 이는 모든 종속성을 코드에 기술해야하므로 로컬 테스트를 위한 데이터베이스와 CI 또는 프로덕션을 위한 다른 데이터베이스를 쉽게 사용할 수 없었기 때문이다.


데이터베이스 커넥션같은 것들을 추상화한 자신만의 팩토리를 만드는 대신, 스프링은 이 모든 것들을 XML 하나로 제공한다.


스프링은 구동시 환경에 특정한 XML을 읽어들이고 XML에 있는 것들을 기반으로 해당 클래스의 인스턴스를 생성한다.

 

그리고 이런 인스턴스들은... 이런 식의 (beans)이다.

 

ApplicationContext.getBean()

 

지금은 @Annotation이다

세월이 흘러 XML은 @Configuration @ConfigurationProperties 같은 주석이 달린 자바 코드로 대체되었다.

 

Screen Shot 2017-10-11 at 10.11.48 PM.png


팩토리 메소드에 @Bean이 달린 것에 주목하라.


설정 클래스가 META-INF/spring.factories에 포함되어 있으면, 스프링 부트 애플리케이션은 시작시 자동으로 팩토리 메소드를 호출하여 해당 클래스의 싱글턴 인스턴스를 생성한다.


이건 마법이다

그리고 이런 인스턴스는 여전히 이라 불린다


Spring Initializr와 모든 starter들은 다 뭐냐고?

이제 configuration scanning이 뭔지 알았으니 스프링 부트 스타터의 역할은 더 이해하기 쉬울 것이다.


스프링 부트 애플리케이션의 종속성에 스타터를 포함시킴으로써 스프링은 스타터 내부의 설정 클래스를 검색하여 해당 스타터에 대한 을 자동으로 생성하게 된다.

 

Initializr injection

짠!



저작자 표시 비영리 동일 조건 변경 허락
신고

설정

트랙백

댓글

Seam in Action

책 이야기 2010.03.17 15:13


저자: 댄 앨런

역자: 전준식, 최지웅, 최현덕

978-89-93827-18-7

 

혁신적인 Java EE 프레임워크인 Seam은 자바 기반 웹 개발을 재창조한다. 단순한 자바 객체와 미리 만들어진 위젯을 사용하고, XML을 거의 사용하지 않는 Seam의 직관적인 아키텍처와 API, 영속성을 적절히 관리하고, UI와 비즈니스 컴포넌트 둘 모두에 적용되는 단일 개발 방식을 제공한다. Seam은 모든 Java EE 컨테이너에서 동작하며 그것의 JSF 기반 접근방법은 Ajax를 매우 쉽게 구현할 수 있도록 해준다.

 

Seam In Action Java EE 개발자를 위한 Seam의 상세한 소개서이다. 이 책에서는 seam-gen을 사용하여 기본 애플리케이션을 생성하며, 예외 기반 설정, Java 5 어노테이션, aspect-oriented 프로그래밍을 통하여 Seam이 핵심 기능 이외의 작업들을 자동화하는 방법에 대해 설명한다. 여러분은 이 책을 통해서 스프링 통합, JavaScript 리모팅, 비즈니스 프로세스(jBPM)유상태 페이지 플로우(jPDL) 등을 위한 핵심 기술들을 마스터할 수 있다.

 

이 책의 내용

Seam-gen을 사용한 빠른 프로젝트 착수

Seam 어노테이션, 컴포넌트와 바이젝션(bijection) 이해

Seam의 새로운 영속성 모델 소개

ㆍ 리치 애플리케이션 만들기

목차보기

더보기

 

 

한국 독자에게

'Seam in Action’이 처음 출간된 이후로, 나는 수많은 개발자들로부터 이 책이 그들의 Seam에 대한 이해를 근본적으로 바꾸어 주었다는 이야기를 들었다. 그들은 Seam을 사용한 이후 개발 생산성을 크게 향상시킬 수 있었으며, 유일한 아쉬움은 그것을 좀 더 일찍 발견하지 못한 것이었다고 전했다. 이런 연락을 받을 때마다 내가 할 수 있는 것은 “그게 이 책을 집필한 이유입니다”라고 답변하는 것뿐이었다. 그리고 그것은 내가 여러분이 이 책을 읽기를 원하는 이유이기도 하다. 나는 여러분 또한 다른 개발자들이 Seam을 사용하면서 느꼈던 장점들을 느낄 수 있기를 바란다. 그런 의미에서, Seam In Action’내에 압축된 지식들이 전 세계로 확산되도록 하기 위해 이 책을 한국어로 출판하는 데 노력을 기울여준 동료들인 최지웅, 전준식, 최현덕 님께 감사의 말을 전한다. 나는 Seam 개발 초기 단계에서부터 그것을 사용했으며, Seam Java EE에서 빠져있는 퍼즐 조각들을 보충해 준다는 것을 알게 되었다. Seam Java EE 내에 존재하는 수많은 기술들 간의 간극을 메워준다. Seam JSF에서 직접 EJB를 호출할 수 있도록 해주거나 확장 영속성 컨텍스트를 적절하게 관리할 수 있도록 하는 등 Java EE 내에 존재하는 수많은 기술들의 간극을 메워주었다. Seam은 또한 개발자들이 가지고 있는 Java EE 개념들과 기술들에 존재하는 수많은 이론적인 한계 또한 지적해 준다. Seam을 공부하는 경우, 여러분은 단지 이 하나의 프레임워크만이 아닌(물론 그것만으로도 충분히 어렵다) Java EE 전반에 대해 배우게 되는 것이다. 이러한 이유로 Seam을 배우는 것이 개발자들에게는 매우 위협적으로 느껴지기도 한다. 나는 이러한 딜레마를 염두에 두고 이 책을 집필했다. 이 책은 JSF 라이프사이클에 대해 설명하고 그것의 단점을 지적한다. 이 책에서는 Facelets를 현실에 맞게 사용하는 방법에 대해 설명하고, 여러분이 영속성 컨텍스트에 대해 정확하게 이해할 수 있도록 하며, 그것을 적절하게 다루는 방법을 가르친다. 이 책은 EJB JNDI 이름들과 Seam이 그것을 어떻게 검색하는지 알기 쉽게 설명한다. 그리고 이 모든 핵심 개념들을 설명한 후, PDF 생성을 위한 iText나 비즈니스 프로세스 관리를 위한 jBPM 같은 서드 파티 통합 기능을 Seam에서 사용하는 방법을 익혀서 여분의 개발 스킬을 확장할 수 있도록 한다. 이 책의 독자들이 이 책을 가치 있는 것으로 느낀다면, 그것은 아마도 내가 여러분과 같은 입장에 있었기 때문일 것이다. 나 역시 Java EE의 모든 부분에 대해 배우려고 노력하고, Seam을 사용하여 그것을 어떻게 하나로 결합시킬 수 있을지 고민한 사람들 중 한명이었다. 이제 여러분의 모국어로 번역된 이 책을 읽으면서 Seam 애플리케이션을 보다 가치 있게 만드는 방법에 대해 배워보도록 하자.

 

Dan Allen(댄 앨런)

Senior Software Engineer

Red Hat, Inc.

그런데, SEAM은 무슨 뜻인가요? 자바와 관련된 용어의 약자일 것이라고 생각했는데, 이음새를 뜻하는 단어 외에는 그저 JBoss에 의해 개발된 웹 애플리케이션 프레임워크라고만 나와 있네요~ 궁금해요!!!

 

저작자 표시 비영리 동일 조건 변경 허락
신고

설정

트랙백

댓글


티스토리 툴바