1HOON
논리적 코딩
1HOON
전체 방문자
오늘
어제
  • HOME (187)
    • ☕️ JAVA (28)
      • WhiteShip Java LIVE Study (6)
      • Effective JAVA (10)
    • 🔮 KOTLIN (4)
    • 🌱 SPRING (51)
      • 스프링 인 액션 (22)
      • JPA (18)
    • ☕️ JAVASCRIPT (6)
    • 📃 DATABASE (40)
      • ORACLE (37)
      • MSSQL (2)
    • 🐧 LINUX (4)
    • 🐳 DOCKER (5)
    • 🐙 KUBERNETES (4)
    • 🏗️ ARCHITECTURE (8)
    • 📦 ETC (27)
      • TOY PROJECT (5)
      • RECRUIT (1)
      • 그냥 쓰고 싶어서요 (14)
      • TIL (1)
    • 🤿 DEEP DIVE (1)
    • 🚽 Deprecated (9)
      • PYTHON (3)
      • AWS (2)
      • HTTP 완벽가이드 (3)
      • WEB (1)

블로그 메뉴

  • 홈
  • 방명록
  • 관리

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
1HOON

논리적 코딩

빈 와이어링 - 자동 와이어링
🌱 SPRING/스프링 인 액션

빈 와이어링 - 자동 와이어링

2018. 5. 7. 15:32

빈 와이어링(Bean wiring)

애플리케이션 객체 간의 연관관계 형성 작업


설정 옵션

- XML에서의 명시적 설정

- 자바에서의 명시적 설정

- 내재되어 있는 빈을 찾아 자동으로 와이어링하기


명시적인 설정은 적을수록 좋다. 명시적인 빈 설정을 해야 할 때는, 타입 세이프를 보장하고 더욱 강력한 JavaConfig를 XML보다 선호한다.

사용하고자 하는 XML 네임스페이스의 기능이 JavaConfig 에 없을 경우 XML을 사용한다.


자동 와이어링

컴포넌트 스캐닝

애플리케이션 컨텍스트에서 생성되는 빈을 자동으로 발견한다.

XML 설정을 통해서 컴포넌트 스캐닝을 활성화하려면 스프링의 컨텍스트 네임스페이스로부터 <context:component-scan> 요소를 사용한다.


1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="UTF-8"?>
<beans xmls="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
    
    <context:component-scan base-package="com.test" />
 
</beans>
Colored by Color Scripter
cs


오토와이어링

스프링이 빈의 요구 사항과 매칭되는 애플리케이션 컨텍스트상에서 다른 빈을 찾아 빈 간의 의존성을 자동으로 만족시키토록 하는 수단이다. @Autowired 어노테이션을 사용한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class CDPlayer implements MediaPlayer
{
    private CompactDisc cd;
    
    @Autowired
    public CDPlayer (CompactDisc cd)
    {
        this.cd = cd;
    }
    
    public void play ()
    {
        cd.play();
    }
}
Colored by Color Scripter
cs


생성자나 setter 메서드를 포함한 어떤 메서드든 스프링은 메서드 파라메터에 의존성을 가진다.

한 개의 빈이 일치하면 그 빈은 와이어링된다. 매칭되는 빈이 없다면 스프링은 애플리케이션 컨텍스트가 생성될 때 예외를 발생시킨다. 예외를 피하기 위해서는 @Autowired(required=false)로 설정하면된다.

required가 false일 때, 스프링은 오토와이어링을 시도하지만 매칭되는 빈이 없으면 와이어링되지 않은 상태로 남겨진다.

그렇기 때문에, 프로퍼티가 와이어링 되지 않은 상태일 때 Null 검사를 수행하지 않으면 NullPointerException이 발생한다.


 


 이 포스트는 스프링 인 액션을 읽고 개인적으로 필요하다고 생각되는 내용을 정리한 포스트입니다.

일부 내용, 소스코드는 스프링 인 액션의 내용일 수 있습니다.

반응형
저작자표시 비영리 변경금지 (새창열림)

'🌱 SPRING > 스프링 인 액션' 카테고리의 다른 글

조건부 빈  (0) 2018.05.21
XML로 빈 와이어링하기  (0) 2018.05.07
자바로 빈 와이어링하기  (2) 2018.05.07
스프링 컨테이너  (0) 2018.05.06
종속객체 주입 (DI, Dependency Injection)  (0) 2018.05.06
    '🌱 SPRING/스프링 인 액션' 카테고리의 다른 글
    • XML로 빈 와이어링하기
    • 자바로 빈 와이어링하기
    • 스프링 컨테이너
    • 종속객체 주입 (DI, Dependency Injection)
    1HOON
    1HOON

    티스토리툴바