[SpringFramework] 스프링 기본 XML파일(2)-<Bean>속성
스프링의 <Bean>속성에는 여러가지 속성이 존재합니다.
지난번 배웠던 id와 class를 제외한 name이라는 속성도 존재하는데, name은 특별한 규칙을 사용하지 않습니다.
특별한 규칙이란? 파스칼, 카멜등등 표기법을 말해요. 다른 글에 정리해 놨습니다.
또한 특수기호도 사용이 가능합니다. 예를 들면 name="https://localhost:8080" 처럼 사용이 가능합니다.
그럼 id와 name중 뭘 써야할까요? 뭘 쓰던 상관은 없지만 규칙이 존재하는 id를 사용하는것이 제일 좋습니다.
다음으로 알아볼 속성은 scope속성입니다.
위의 코드에서 price 변수가 존재합니다. 하지만 SamsungTV클래스를 여러개 만든다고 가격이 변동할까요? 그렇지 않습니다.
이런 클래스는 굳이 여러개의 객체를 만들지 않아도, 하나의 객체를 가지고 사용할수 있습니다.
필요없는 객체가 많아지면 안좋겠죠?
그럼 어떡 하는게 좋을까요? 바로 생성했던 객체를 재활용 하는것입니다.
이런식으로 이미 생성한 객체를 맵핑해주면 같은 주소를 공유하기 때문에 재활용이 가능합니다.
하지만 개발할때마다 이런식으로 할수 없습니다.
지금 우리는 기껏해야 객체가 5개 안에서 놀지만, 큰 프로그램같은 경우는 수십개 수백개의 객체가 생성과 소멸이 반복되죠.
이런 경우를 대비해 디자인패턴이라는 것을 이용합니다.
디자인패턴은 제가 따로 정리를 하겠습니다.
일단 그런게 있구나 하고 넘어가시면 좋을거 같아요.
우리는 위 상황을 대비하기위해 디자인패턴에 싱글톤 패턴을 이용할것입니다.
어려워할 필요없이, xml에 한줄을 추가해주면 끝이 납니다.
<bean id= "tv" class= "경로.SamsungTV" scope="singleton">
끝이 났습니다.
이제 위에서 쓴거처럼 우리의 main을 바꿔서 실행하시면 됩니다.
위 그대로 쓰시면 안됩니다!!!!
우리는 컨테이너구동하는 코드 한줄!
객체요청하는 코드 한줄!
AbstractApplicationContext ~~~~~~~
TV tv1 = (TV)factory.getBean("tv");
...
이런식으로 작성됩니다!