스프링을 사용하는 이유 :
핵심 의존타입을 스프링에 맡기고 인터페이스를 적극적으로 활용하여 개발 시 의존관계를 완화하기 위하여 스프링을 사용한다.
스프링 사용하지 않을 때 와 사용할 때 의 비교
attack메소드를 가지고 있는 인터페이스 Weapon이 있고
Weapon을 implements하는 TestWeapon이 있다고 가정해보자.
이 때 스프링을 사용할 때와 스프링을 사용하지 않을 때롤 비교해 보겠다.
package test.example;
import test.mypac.TestWeapon;
import test.mypac.Weapon;
public class MainClass {
	public static void main(String[] args) {
			//useWeapon()메소드를 호출하는게 목적이라면?
			//필요한 type객체를 직접 생성해서
			TestWeapon w2=new TestWeapon();
            
			//메소드를 호출함으로써 목적을 달성한다.
			useWeapon(w2);
		}
		//Weapon(인터페이스) type을 전달해야 호출할 수 있는메소드
		public static void useWeapon(Weapon w) {
			w.attack();
		}
	
}
↑스프링을 사용하지 않는경우 :
1. MainClass에서 객체를 new해서 직접 생성한다.
2.import 부분에 TestWeapon이 있다.
package test.example2;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import test.mypac.Weapon;
public class MainClass {
	public static void main(String[] args) {
		//init.xml문서를 해석해서 bean 을 생성한다.
		ApplicationContext context=
				new ClassPathXmlApplicationContext("test/example2/init.xml");
		//스프링이 관리하고 있는 객체중에서 "myWeapon"이라는 이름의 객체의
		//참조값을 가지고 와서 Weapon type으로 casting해서 변수에 담는다.
		Weapon w1=(Weapon)context.getBean("myWeapon");
		//Weapon type 객체를 이용해서 원하는 동작을 한다.
		useWeapon(w1);
	}
	public static void useWeapon(Weapon w) {
		w.attack();
	}
}
<?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">
	<!-- WeaponImpl 객체를 생성하고 그 객체의 이름을 myWeapon으로 부여한다. -->
	<bean id="myWeapon" class="test.mypac.TestWeapon"/>
</beans>
↑스프링을 사용하는경우 :
1. 객체를 MainClass에서 직접 new하지 않고 xml문서에서 TestWeapon 객체를 생성한다.
xml에서 생성한 객체를 getBean으로 가져와서 변수에 담아 사용한다.
2. WeaponImpl을 import하지 않아도 사용할 수 있다.
스프링을 사용하지 않을 경우에는 TestWeapon 을 import하기 때문에 TestWeapon이름을 변경시오류가난다.
스프링 사용 시 TestWeapon 을 import하지 않아도 되기 때문에 TestWeapon이름을 변경하더라도 오류가 나지 않는다.
이것이 스프링의 사용이 의존관계를 완화한다는 것의 의미이다.
'프로그래밍 기초 > SPRING' 카테고리의 다른 글
| [Spring]aspectj expression (0) | 2020.01.30 | 
|---|---|
| [Spring]AOP란? / Aop를 위한 환경설정 및 Aop활용 (0) | 2020.01.29 | 
| [Spring] MVC 패턴과 SPRING이란? SPRING MVC 구조와 처리과정 (0) | 2020.01.28 | 
| [Spring] MVC 프로젝트 만들고 환경설정 하는 방법 (0) | 2020.01.28 | 
| [Spring]이클립스에 메이븐 설치 및 환경변수 설정 (0) | 2020.01.23 | 
 
                  
                 
                  
                 
                  
                