⁂ MyBatis Framework/: 기본 익히기

[MyBatis3] #3 의존성 주입(POJO방식과 Bean방식)

김갱환 2022. 11. 9. 10:04

새 프로젝트 생성

 

 

패키지와 인터페이스 및 클래스 생성

 

IHello.java

package kr.co.itwill.di;

public interface IHello {

	public void sayHello(String name); //추상메소드
	
}//interface end

 

MessageKO1.java

package kr.co.itwill.di;

public class MessageKO1 implements IHello {

	public MessageKO1() {
		System.out.println("-----MessageKO1() 객체 생성됨");
	}//end
	
	@Override
	public void sayHello(String name) {
		System.out.println("안녕하세요~~" + name);
	}//end
	
}//class end

 

MessageEN1.java

package kr.co.itwill.di;

public class MessageEN1 implements IHello {

	public MessageEN1() {
		System.out.println("-----MessageEN1() 객체 생성됨");
	}//end
	
	@Override
	public void sayHello(String name) {
		System.out.println("Hello~~" + name);
	}//end
}//class end

 

 

생성

POJO 방식

HelloPOJO.java

package kr.co.itwill.di;

public class HelloPOJO {

	public static void main(String[] args) {
		//POJO 방식
		
		IHello hello = null;
		
		hello = new MessageKO1(); //다형성
		hello.sayHello("손흥민");
		
		hello = new MessageEN1();
		hello.sayHello("TOM");

	}//main() end
}//class end

 

 

스프링 빈 방식

 

xml 파일 생성

springbean.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
http://www.springframework.org/schema/beans/spring-beans.xsd">

	<!-- springbean.xml -->
	<!-- 스프링 빈 등록 -->
	
	<bean id="msgKO" class="kr.co.itwill.di.MessageKO1"></bean>
	<bean id="msgEN" class="kr.co.itwill.di.MessageEN1"></bean>
    
</beans>

 

 

클래스 생성

HelloBean.java

package kr.co.itwill.di;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

public class HelloBean {

	public static void main(String[] args) {
		//스프링 빈
		
		Resource resource = new ClassPathResource("springbean.xml");
		BeanFactory factory = new XmlBeanFactory(resource);
		
		IHello hello = null;
		hello = (IHello) factory.getBean("msgKO");
		hello.sayHello("김연아");
		
		hello = (IHello) factory.getBean("msgEN");
		hello.sayHello("Jane");

	}//main() end
}//class end

 


기능을 조금 더 추가하여 POJO방식과 스프링 빈 방식을 비교

 

 

MessageKO2, MessageEN2 클래스 생성

 

MessageKO2.java

package kr.co.itwill.di;

import javax.swing.JOptionPane;

public class MessageKO2 implements IHello {

	public MessageKO2() {
		System.out.println("-----MessageKO2() 객체 생성");
	}
	
	@Override
	public void sayHello(String name) {
		JOptionPane.showMessageDialog(null, "안녕하세요~~" + name);
	}
	
}//class end

 

MessageEN2.java

package kr.co.itwill.di;

import javax.swing.JOptionPane;

public class MessageEN2 implements IHello {

	public MessageEN2() {
		System.out.println("-----MessageEN2() 객체 생성");
	}
	
	@Override
	public void sayHello(String name) {
		JOptionPane.showMessageDialog(null, "Hello~~" + name);
	}
	
}//class end

 

POJO 방식

HelloPOJO2 클래스 생성

 

HelloPOJO2.java

package kr.co.itwill.di;

public class HelloPOJO2 {

	public static void main(String[] args) {
		
		IHello hello = null;
		
		hello = new MessageKO2(); //다형성
		hello.sayHello("손흥민");
		
		hello = new MessageEN2();
		hello.sayHello("John");

	}//main() end
}//class end

 

 

 

 

스프링 빈 방식

 

springbean.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
http://www.springframework.org/schema/beans/spring-beans.xsd">

	<!-- springbean.xml -->
	<!-- 스프링 빈 등록 -->
	
	<!--
	<bean id="msgKO" class="kr.co.itwill.di.MessageKO1"></bean>
	<bean id="msgEN" class="kr.co.itwill.di.MessageEN1"></bean>
    -->
    
	<bean id="msgKO" class="kr.co.itwill.di.MessageKO2"></bean>
	<bean id="msgEN" class="kr.co.itwill.di.MessageEN2"></bean>
</beans>

 

HelloBean.java

package kr.co.itwill.di;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

public class HelloBean {

	public static void main(String[] args) {
		//스프링 빈
		
		Resource resource = new ClassPathResource("springbean.xml");
		BeanFactory factory = new XmlBeanFactory(resource);
		
		IHello hello = null;
		hello = (IHello) factory.getBean("msgKO");
		hello.sayHello("김연아");
		
		hello = (IHello) factory.getBean("msgEN");
		hello.sayHello("Jane");

	}//main() end
}//class end

POJO방식으로 한 HelloPOJO2를 새로 만든 것과 달리

 

스프링 빈 방식의 HelloBean은 수정이 필요 없다.