[SPRING] 스프링 프레임워크 시작하기-4

🐷Jinie (juniorDeveloper)·2020년 11월 17일
1

JSP/MVC/SPRING

목록 보기
40/81
post-thumbnail

자바 웹개발
1. JDK
2. Eclipse
3. Tomcat
4. DBMS (ORACLE, MySQL, H2...)

  • 어제 공부한 내용 복습

1. bean 엘리먼트 속성

1-1. init-method :

  • Servlet 컨테이너는 생성자로 Servlet 객체의 멤버변수를 초기화할 수 없다.
  • 그래서 init()메서드를 재정의해서 멤버변수를 초기화한다.
  • 생성자를 실행한 후에 실행된다.

1-2. destroy-method :

  • 객체를 삭제하기 직전에 호출될 임의의 메서드를 지정할 수 있다.
  • 일반 메서드를 다 실행하고 객체를 close하기 전에 실행되는것을 볼 수 있다.

1-3. scope속성

  • 객체를 생성했을때, 생성자만 계속 출력된다.
  • 같은 객체를 각자다른 주소로 3번부르는 이런현상은 옳지 않다..

  • Spring에서의 Scope의 디폴트값은 singleton이기 때문에 객체를 여러번 불러와도
    하나의 주소로 하나의 객체로 사용된다. 객체는 메모리에 하나만 생성되어 유지된다.
init-method="initMethod" destroy-method="destroyMethod" scope="singleton"/>
  • 위와같이 scope로 잡아줄 수 있지만, singleton은 디폴트값이기 때문에 생략이 가능하다.
  • scope를 prototype으로 설정하면
    bean이 요청될 때마다 매번 새로운 객체를 생성하여 반환한다.

2. 의존성 주입

2-1. 의존성 관계

  • 일반적인 방식으로 speaker를 이용해보자
  • 그림처럼 객체를 생성하고 통해서 메서드를 호출해 사용한다.
  • 이렇게 사용해버리면 다른 스피커를 사용하고 싶을때, 코드를 교체해야한다.
  • 이런식으로 코드에서 생성했던 다른 스피커의 객체를 원하는 스피커로 매번 바꿔줘야한다.

2-2. 생성자 인젝션 이용하기

  • 일반적인 방식의 단점을 보완하기 위해서 '생성자 인젝션'을 이용한다.

2-3. 의존관계 변경

  • 기존에는 Sonyspeaker를 쓰려면 Sonyspeaker로 kakaospeaker를 쓰려면 kakaospeaker로 객체를 생성하는 코드를 계속 찾아서 다 변경해주어야 했지만,
  • 인터페이스를 이용해서 최상위 Speaker를 만들어 Speaker 객체를 선언해주면
  • 하위 speaker 어떤 객체를 받아와도 메서드를 사용할 수 있게된다.

2-4. 다중 변수 매핑

  • constructor-arg 엘리먼트 개수 = 매개변수 개수
  • 위쪽에 Speaker speaker; 부분은 단순하게 speaker라는 클래스 변수의 형이 Speaker임을 알리는 것.
  • 따라서 constructor-arg 엘리먼트에서 생성한 객체를 받아서 넣어주는 작업이 필요하기 때문에
  • 생성자에서 매개변수를 이용해 받아 this.speaker로 넣어줌.
profile
ᴘᴇᴛɪᴛs ᴅᴇ́ᴠᴇʟᴏᴘᴘᴇᴜʀ. ᴘʀᴏɢʀᴀᴍᴍᴀᴛɪᴏɴ = ᴘʟᴀɪsɪʀ 💕

0개의 댓글