[SPRING] 스프링 프레임워크 시작하기-5 [Setter 인젝션/ 어노테이션기반 설정]

🐷Jinie (juniorDeveloper)·2020년 11월 18일
0

JSP/MVC/SPRING

목록 보기
41/81

스프링 프레임워크는 XML 설정이 매우 중요하다.

1. Setter 인젝션

  • Setter 인젝션은 Setter메서드를 호출하여 의존성 주입을 처리한다.
  • Setter인젝션은 property를 이용한다.
  • 생성자 인젝션은 생성자의 매개변수가 추가되어야하고,
    Setter인젝션은 Setter메서드가 추가되어야한다.
  • 대부분 Setter인젝션을 사용한다.

2. p네임스페이스 사용하기

  • Setter인젝션에서 사용할 수 있다.
  • p네임스페이스 xml파일에 추가하기
  • xml에서 p네임스페이스 코드 사용하기
<bean id="sam" class="polymophism.SamsungTv" p:speaker-ref="speaker" p:price="2700000">
  • p:변수명-ref="참조할 객체의 이름이나 아이디"
    p:변수명="설정할 값"
  • 좀 더 효율적으로 의존성 주입을 처리할 수 있다.

3. 어노테이션 설정

  • XML파일의 과도한 설정에 대한 부담이 크고, 이로 인해 프레임워크 사용을 꺼리기때문에
    이것을 보완하고자 어노테이션을 이용한 설정을 지원한다.

3-1. 컴포넌트 스캔(Component-scan) 설정


<context:component-scan base-package="polymophism"></context:component-scan>
  • "polymophism"패키지를 기본패키지로 설정한다.
  • 사용할 java파일에 어노테이션 Component를 설정한다.
  • 이렇게되면 컨테이너에서 Component-scan으로 설정한 베이스 패키지를 스캔하고
    어노테이션Component로 잡혀있는 파일을 찾아서 해당되는 객체를 생성한다.
  • @Component("Bean이름")
  • @Component는 '클래스' 에 써줘야함.

3-2. 의존성 주입 어노테이션

[의존성 주입 어노테이션]

1. @Autowired :
생성자나 메서드, 멤버변수 위에 모두 사용가능
멤버변수 위에 주로 사용한다.
해당 타입의 객체를 찾아서 자동으로 할당한다.
2. @Qualifier :
특정 객체의 이름을 이용해 의존성 주입할 때 사용
3. @Inject :
@Autowired와 동일한 기능 제공
4. @Resource :
@Autowired + @ Qualifier
@Resource(name="객체명") 과 같이 name속성을 사용할 수 있다.

  • 여기서 사용한 의존성 주입 어노테이션은
    @Autowired이다.
    멤버변수 위에 선언해주면 자동으로 해당 형을 받아올 수 있는 @Component선언된 객체를 찾아서 넣어준다.
  • @Autowired 를 사용하면 위의 그림처럼 두개의 객체가 같은 형을 가지고 있을 때, 충돌오류가 발생한다는 점이다.
  • 같은 타입의 객체가 모두 메모리에 생성되어있으면 컨테이너는 어떤 객체를 할당할지 스스로 판단할 수 없어서 에러가 발생한다.
  • 같은 타입의 객체가 여러개라면
  • 이렇게 @Qualifier("객체명") 을 @Autowired 아래에 넣어준다.
  • 이렇게 되면 원하는 형을가진 객체명을 컨테이너가 자동으로 주입한다.
  • @Resource를 사용하면 이렇게 좀 더 간단하게 의존성 주입을 실행할 수 있다.
profile
ᴘᴇᴛɪᴛs ᴅᴇ́ᴠᴇʟᴏᴘᴘᴇᴜʀ. ᴘʀᴏɢʀᴀᴍᴍᴀᴛɪᴏɴ = ᴘʟᴀɪsɪʀ 💕

0개의 댓글