beans.xml 에 bean 추가하기
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 해당 클래스로 만든 객체 hello를 스프링에 등록 -->
<bean id="hello" class="com.demo.beans.HelloWorldEn" />
</beans>
비교하기에서 만든 demo.beans 패키지 복사해서 넣어주고 이름 바꾸기
main 클래스로 이동해서 실행하면
12:06:53.788 [main] DEBUG org.springframework.context.support.ClassPathXmlApplicationContext - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@32d2fa64
12:06:53.931 [main] DEBUG org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loaded 1 bean definitions from class path resource [com/demo/config/beans.xml]
12:06:53.951 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'hello'
12:06:53.980 [main] DEBUG org.springframework.context.support.ClassPathXmlApplicationContext - Closing org.springframework.context.support.ClassPathXmlApplicationContext@32d2fa64, started on Wed Oct 18 12:06:53 KST 2023
singleton 클래스로 하나의 객체를 만든다.
main에서 beans 사용하기
package com.demo.main;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.demo.beans.HelloWorld;
public class MainClass {
public static void main(String[] args) {
// beans.xml 파일을 로딩한다
ClassPathXmlApplicationContext ctx =
new ClassPathXmlApplicationContext("com/demo/config/beans.xml");
//xml에 정의된 beans 객체의 주소값을 가져온다.
//bean 이름이 hello임 (id값) 타입은 object로 리턴되기 때문에 타입 설정이 필요함
//그래서 (HelloWorld) 붙여줌
HelloWorld hello1 = (HelloWorld)ctx.getBean("hello");
callMethod(hello1);
ctx.close();
}
public static void callMethod(HelloWorld hello) {
hello.sayHello();
}
}
실행 결과 (Hello) 출력확인
12:11:58.533 [main] DEBUG org.springframework.context.support.ClassPathXmlApplicationContext - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@32d2fa64
12:11:58.674 [main] DEBUG org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loaded 1 bean definitions from class path resource [com/demo/config/beans.xml]
12:11:58.694 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'hello'
Hello
12:11:58.723 [main] DEBUG org.springframework.context.support.ClassPathXmlApplicationContext - Closing org.springframework.context.support.ClassPathXmlApplicationContext@32d2fa64, started on Wed Oct 18 12:11:58 KST 2023
객체를 스프링에 등록만 시켜주면 스프링에서 자동으로 객체를 가져와서 사용을 할 수 있음.
//타입 설정 첫 번째 방법
HelloWorld hello1 = (HelloWorld)ctx.getBean("hello");
callMethod(hello1);
//타입 설정 두 번째 방법
HelloWorld hello2 = ctx.getBean("hello",HelloWorld.class);
callMethod(hello2);
이번에는 ko 객체 만들기
beans.xml -> 기존 en 은 주석처리하고 ko추가
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 해당 클래스로 만든 객체 hello를 스프링에 등록 -->
<!-- <bean id="hello" class="com.demo.beans.HelloWorldEn" /> -->
<bean id="hello" class="com.demo.beans.HelloWorldKo" />
</beans>
main에 와서
실행 결과 (안녕하세요) 출력확인
12:16:57.499 [main] DEBUG org.springframework.context.support.ClassPathXmlApplicationContext - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@32d2fa64
12:16:57.640 [main] DEBUG org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loaded 1 bean definitions from class path resource [com/demo/config/beans.xml]
12:16:57.661 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'hello'
안녕하세요
안녕하세요
12:16:57.689 [main] DEBUG org.springframework.context.support.ClassPathXmlApplicationContext - Closing org.springframework.context.support.ClassPathXmlApplicationContext@32d2fa64, started on Wed Oct 18 12:16:57 KST 2023
현재 이 방법은 원리를 알기위해서 하는 방법이고 이후에는
bean 등록만하면 자동으로 변경되게끔 사용가능함
'BACKEND > Spring' 카테고리의 다른 글
bean 객체 생성하기 (0) | 2023.10.18 |
---|---|
IOC 컨테이너? (0) | 2023.10.18 |
스프링 프레임 워크 시작하기- 라이브러리, 로그 기록 (0) | 2023.10.18 |
Java 프로젝트랑 스프링 프레임 워크 비교하기 (0) | 2023.10.18 |
Spring Framework(스프링 프레임워크) ? (0) | 2023.10.18 |