spring di와 pojo는 뭘까?

HYK·2021년 3월 12일
1

spring

목록 보기
2/4

spring 공부 중 가장 많이 사용하는 단어들을 정리해보자

1.pojo

pojo는 Plain Old Java Object로 직역하면 오래된 자바 오브젝트? 라는 뜻으로 쓰인다고 한다.
그 의미는 무거운 ejb(Enterprise JavaBeans) 반대로 가벼운 자바 객체를 강조하는 의미로 사용 되고 있었다고...

그래서 핵심은?

getter/setter 와 같이 단순한 메서드를 가지고 java의 특정 규약이 아닌 어떤 곳에서도 종속적이면 안 되는 객체를 말하는 것.

spring에서는 어떻게 사용될까?

아무 생각 없이 코딩할 때는 몰랐지만 어노테이션을 사용할 때 @controller class에 원래 상속을 받던 것들을 모두 제거했다. 이와 같이 service도 마찬가지로 종속성을 제거함으로써 pojo 클래스의 형태로 사용하면 유지 보수에 용이한 유연한 코딩을 할 수 있다고 한다.

jspservlet class
public mainparm extend HttpServlet{ ....
spring controller class
@controller
public mainparm (){ ....

2.di

di(Dependency Injection)는 ioc, aop와 더불어 스프링 프레임워크의 핵심이라고 생각한다.
한글로는 의존성 주입이라는 이해가 되지 않는 뜻이다. 쉽게 말하면 어떤 객체를 자신이 아닌 외부에서 의존성을 결정해 준다는 개념이다. 객체를 내부에서가 아닌 외부에서 결정해서 조립해 준다? 이런 느낌 .. 그럼 프로그램에서 의존성이라는 것은 또 뭘까?

hello1class
public class hello1
	public void printing(String msg){
		System.out.print(msg);
	}
}
app class
public class app{
	public void run(){
		hello1 hw = new hello1();
		hw.printing("hi");
	}
}

라는 코드가 있을 때 app 클래스가 hello1 클래스에 의존한다고 말한다.
근데 생각하기에 뭔가 문제가 있어 보이진 않는데 왜 굳이 의존성을 밖에서 결정하는 걸까?
내가 여기서 새로운 버전의 printing 메서드를 유지 보수하면서 좀 더 세련되게 바꾸고 싶다면?
실행 코드 자체를 바꾸는 것보다. 외부 파일로 원하는 기능이 실행되게 설정한다면 유지 보수 시에 코드를 변경하는 일없이 깔끔하게 처리할 수 있다.

외부 파일 사용하지 않을 시

hello2 class는 기존의 hello1 클래스를 업데이트한 클래스
public class hello2{ 
	public void printing(String msg){
		System.out.print(msg+"라는메세지를 받았다.");
	}
}
app class
public class app{
	public void run(){
		hello2 hw = new hello2(); //실행부분을 계속해서변경해야함
		hw.printing("hi");
	}
}

외부 파일을 이용할 때

prints interface
public interface prints{ //인터페이스 추가
	public void printing(String msg);
}
hello2 class
public class hello2 implements prints //hello 클래스
	public void printing(String msg){
		System.out.print(msg+"라는메세지를 받았다.");
}
}
app class
public class app{
	private prints hw;
		public void run(){
		hw.printing("hi")
	}
}
xml 설정 파일
<bean id ="hw" class="org.hy.web.entity.hello2"/>

<bean name="controller" class="org.hy.web.app">
	<property name="hw" ref="hw"></property>
</bean>

이때 hello1버전으로 돌아가고 싶다면 실행 코드는 그대로 둔 채로 xml 설정 파일을 수정해 주면 된다.


<bean id ="hw" class="org.hy.web.entity.hello2"/> <!--이부분을-->
<bean id ="hw" class="org.hy.web.entity.hello1"/> <!--이렇게 변경해주면된다-->
profile
Test로 학습 하기

0개의 댓글