상세 컨텐츠

본문 제목

[SpringFramework] 빈, 컨테이너, 컨스트럭터, 세터, 어노테이션에 대해서.

카테고리 없음

by esoesmio 2023. 6. 1. 17:48

본문

 

클래스 불러오기 - initmethod destroy scope lazyinit - construrcot - gettersetter - 빈없이 component , context - @wire, quali 대신에 - resource

 

 

 

 

root-context에

 

이렇게하면 클래스를 쉽게 불러올 수 있다.

 

 

이런식으로.

 

아마 쉽게 인스턴스를 생성하기 위해 쓰는 듯 하다.

 

 

 

 

initmethod destroymethod scope, lazyinit

 

이렇게 일단 메소드를 만들자.

이닛메소드는 빈이 생성될때 행해지는 메소드고 디스트로이 메소드는 빈이 끝나기 직전에 ㅁ행해지는 메소드이다.

root context에도 이렇게 설정한다.

 

scope와 lazyinit에 대한 속성은 여기있다.

 

프로토타입과 싱글톤에 대해서 정리하자면

 

원래 아무리 

car = (kiacar) factory.getBean("kcar");

이렇게 인스턴스를 생성해도 어차피 그거 재사용하니까 새로운 인스턴스 안만들어지는데

scope를 prototype으로 하면 

car = (kiacar) factory.getBean("kcar");

이거 나올때마다 새로운 인스턴스 만들어진다.

 

 

lazy-init에 대해서 정리해보자면

원래 

car car = (kiacar) factory.getBean("kcar");

이런식으로 쓰면

시작하자마자 무지성으로 전부다 처음부터 인스턴스가 생성된다.

하지만 lazy-init으로하면

car car = (kiacar) factory.getBean("kcar");

이걸 쓸 때만 인스턴스가 생성된다

 

 

 

 

 

 

 

 

 

 

여기서부터는 DI constructor

이걸보면 원래 메소드나 클래스 내부에다가 

caraudio caraudio = new caraudio(); 이렇게 인스턴스 생성을 해야지 사용할수 있다.

 

근데 이거를 안하고 도 할수 있다. ROOt-context.xml을 조종하고

 

hyundaicar에서 생성자를 만드는데 첫번째 파라미터는 CARAUDio 두번째는 STring model로 넣을것이다.

 

 

 

 

이걸보면 일단 caraudio라는 인스턴스는 있어야 하니까 맨아래 빈을 만들어준다.

 

그리고 Hcar빈 내부에

constructor-arg를 넣고 파라미터의 속성이 객체면 ref = "빈으로 만든 객체의 아이디" 그냥 값이면 value = "값"

을 넣어준다.

 

 

 

 

 

 

 

 

 

 

 

다음단계

여기서 car를 INterface로 만들겠다.

그러면 appleaudio, sonyaudio 만들고

여기서 맨아래 CARAUDIo에 관련된것 의 클래스만 SONYAUDIo로 만들어주면 됨.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

이걸 COnstructor 에 안하고 GETter setter 에 해도 됨.

게터 세터를 이렇게 만들고

bean 속성에  p:caraudio-ref    p:model  이런식으로 적으면 됨.

 

 

 

 

 

 

 

 

 

 

 

 

xml에 다 빈 걸어주는게 너무 귀찮음 그러면

 

 

이렇게 넣어두고

 

이런색으로 다 바꿔주면 됨.

 

 

 

 

 

 

 

 

 

 

 

 

xmi 넣을 때 쓰는 방법

 

 

요즘에는 필드의존성보다 생성자의존을 더 많이쓴다. 순환에러떄문에.

 

댓글 영역