※ src/main/java 폴더에 xyz.itwill04.bean 패키지 생성
📃CreateBean.java(클래스)
※ xyz.itwill04.bean 패키지에 CreateBean.java 클래스 생성
package xyz.itwill04.bean; // public class CreateBean { public CreateBean() { // TODO Auto-generated constructor stub System.out.println("### CreateBean 클래스의 기본 생성자 호출 ###"); } // public void display() { System.out.println("*** CreateBean 클래스의 display() 메소드 호출 ***"); } }
📢Spring Bean Configuration File을 여러개 작성하여 사용하는 이유
→ 하나의 Spring Bean Configuration File을 사용하여 Spring Bean을 설정할 경우 가독성 및 유지보수의 호율의 비효율성 증가
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
📌import : 다른 Spring Bean Configuration File의 Spring Bean 정보를 제공받아 포함하기 위한 엘리먼트
📍resource 속성 : 포함될 Spring Bean Configuration File의 경로를 속성값으로 설정
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
🌟bean : 스프링 컨테이너에게 Spring Bean 관련 정보를 제공하기 위한 엘리먼트
→ Spring Bean : 스프링 컨테이너에 의해 관리(생성,사용,소멸)되는 객체(클래스)
📍class 속성 : Spring Bean으로 등록되어 사용될 클래스를 속성값으로 설정 - 필수
→ class 속성값은 이클립스의 자동 완성 기능을 사용하여 작성 가능
📍id 속성 : Spring Bean을 구분하기 위한 식별자를 속성값으로 설정
→ id 속성 대신 name 속성을 사용하여 식별자 설정 가능
→ id 속성값은 클래스 이름(부모 인터페이스 이름)을 이용하여 설정하는 것을 권장
→ id 속성값은 class 속성이 설정되어 있는 경우 이클립스의 자동 완성 기능을 사용하여 작성 가능📃04-1_beanCreate.xml
※ src/main/resources 폴더에 04-1_beanCreate.xml 파일 생성
<?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 https://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- Spring Bean Configuration File을 여러개 작성하여 사용하는 이유 --> <!-- → 하나의 Spring Bean Configuration File을 사용하여 Spring Bean을 설정할 경우 가독성 및 유지보수의 호율의 비효율성 증가 --> <!-- ================================================================================ --> <!-- import : 다른 Spring Bean Configuration File의 Spring Bean 정보를 제공받아 포함하기 위한 엘리먼트 --> <!-- resource 속성 : 포함될 Spring Bean Configuration File의 경로를 속성값으로 설정 --> <!-- <import resource="03_message.xml"/> --> <!-- ================================================================================ --> <!-- ★bean : 스프링 컨테이너에게 Spring Bean 관련 정보를 제공하기 위한 엘리먼트 --> <!-- → Spring Bean : 스프링 컨테이너에 의해 관리(생성,사용,소멸)되는 객체(클래스) --> <!-- class 속성 : Spring Bean으로 등록되어 사용될 클래스를 속성값으로 설정 - 필수 --> <!-- → class 속성값은 이클립스의 자동 완성 기능을 사용하여 작성 가능 --> <!-- id 속성 : Spring Bean을 구분하기 위한 식별자를 속성값으로 설정 --> <!-- → id 속성 대신 name 속성을 사용하여 식별자 설정 가능 --> <!-- → id 속성값은 클래스 이름(부모 인터페이스 이름)을 이용하여 설정하는 것을 권장 --> <!-- → id 속성값은 class 속성이 설정되어 있는 경우 이클립스의 자동 완성 기능을 사용하여 작성 가능 --> <bean class="xyz.itwill04.bean.CreateBean" id="createBean"/> </beans>
📢Spring Framework에서는 BeanFactory 객체 또는 ApplicationContext 객체로 스프링 컨테이너(Spring Container) 기능 제공
→ 스프링 컨테이너는 환경설정파일(Spring Bean Configuration File - XML)을 제공받아 클래스의 객체(Spring Bean)를 관리📃CreateBeanApp.java(클래스)
※ xyz.itwill04.bean 패키지에 CreateBeanApp.java 클래스 생성
package xyz.itwill04.bean; // import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.core.io.FileSystemResource; // //Spring Framework에서는 BeanFactory 객체 또는 ApplicationContext 객체로 스프링 컨테이너(Spring Container) 기능 제공 //→ 스프링 컨테이너는 환경설정파일(Spring Bean Configuration File - XML)을 제공받아 클래스의 객체(Spring Bean)를 관리 @SuppressWarnings("deprecation") public class CreateBeanApp { public static void main(String[] args) { //BeanFactory를 이용한 방법 System.out.println("1.BeanFactory 객체를 생성하여 스프링 컨테이너로 사용"); System.out.println("============== Spring Container 초기화 전 =============="); //BeanFactory 인터페이스를 상속받은 클래스로 객체를 생성 - BeanFactory 객체 //→ BeanFactory 객체를 생성할 때 Spring Bean Configuration File를 제공받아 스프링 컨테이너 생성 - 스프링 컨테이너의 초기화 작업 //→ Spring Bean Configuration File의 파일경로를 모두 표현하여 설정 //→ BeanFactory 객체는 Spring Bean Configuration File에 등록된 클래스로 미리 생성하지 않고 Spring Bean 요청시 객체를 생성하여 제공 BeanFactory factory=new XmlBeanFactory(new FileSystemResource("src/main/resources/04-1_beanCreate.xml")); System.out.println("============== Spring Container 초기화 후 =============="); //BeanFactory.getBean(String beanName) : 스프링 컨테이너에서 Spring Bean을 구분하기 위한 식별자(beanId 또는 beanName)을 // 전달하여 객체(Spring Bean)를 생성하여 반환하는 메소드 //→ Object 타입의 객체를 반환하므로 반드시 명시적 객체 형변환 사용 //→ 전달받은 식별자(beanName)에 대한 Spring Bean이 없는 경우 NoSuchBeanDefinitionException 발생 CreateBean bean1=(CreateBean)factory.getBean("createBean"); bean1.display(); System.out.println("========================================================"); //==================================================================================================================================== //ApplicationContext를 이용한 방법 System.out.println("2.ApplicationContext 객체를 생성하여 스프링 컨테이너로 사용"); System.out.println("============== Spring Container 초기화 전 =============="); //ApplicationContext 인터페이스를 상속받은 클래스로 객체를 생성 - ApplicationContext 객체 //→ ApplicationContext 객체를 생성할 때 Spring Bean Configuration File를 제공받아 스프링 컨테이너 생성 - 스프링 컨테이너의 초기화 작업 //→ 클래스가 참조 가능한 디텍토리(ClassPath)에 있는 Spring Bean Configuration File을 설정 //→ ApplicationContext 객체는 Spring Bean Configuration File에 등록된 클래스로 미리 객체를 생성하여 Spring Bean 요청시 제공 ApplicationContext context=new ClassPathXmlApplicationContext("04-1_beanCreate.xml"); System.out.println("============== Spring Container 초기화 후 =============="); //DL(Dependency Lookup) : 스프링 컨테이너로부터 필요한 Spring Bean을 검색하여 제공하는 메소드 //ApplicationContext.getBean(String beanName) : 스프링 컨테이너에서 Spring Bean을 구분하기 위한 식별자(beanName)을 전달하여 객체(Spring Bean)를 반환하는 메소드 CreateBean bean2=(CreateBean)context.getBean("createBean"); bean2.display(); // //ClassPathXmlApplicationContext.close() : ApplicationContext 객체를 제거하는 메소드 //→ 스프링 컨테이너에 의해 관리되는 모든 객체(Spring Bean) 자동 소멸 ((ClassPathXmlApplicationContext)context).close(); System.out.println("========================================================"); } }