Spring(스프링), Spring Boot(스프링부트), JSP

스프링(Spring) new 연산자를 이용한 객체생성과 DI를 이용한 객체생성의 관계

알통몬_ 2017. 12. 28. 15:00
반응형


공감 및 댓글은 포스팅 하는데

 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 

도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 

만들어 나가겠습니다^^

 


이번 포스팅에서는

new 연산자를 이용한 객체생성과 DI를 이용한 객체생성의 관계에

대해서 알아보겠습니다.


공통

Sub.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package smaple;
 
public class Sub {
 
    private String name;
    
    public Sub() {
        System.out.println("Sub클래스 객체 생성.");
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public String getName() {
        return name;
    }
}
 
cs


1. new 연산자를 이용

Running.java

1
2
3
4
5
6
7
8
9
10
11
12
13
package smaple;
 
public class Running {
 
    
    public static void main(String[] args) {
        Sub sub = new Sub();
        sub.setName("알통몬");
        
        System.out.println("티스토리 블로그하는 " + sub.getName());
    }
}
 
cs


2. DI 적용

 Running2.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package smaple;
 
import org.springframework.context.support.GenericXmlApplicationContext;
 
public class Running2 {
    
    public static void main(String[] args) {
        //xml 설정 파일을 불러오는 코드        
        GenericXmlApplicationContext ctx = 
               new GenericXmlApplicationContext("classpath:sample.xml");
//new 연산자 대신에 getBean()을 통해 객체 불러옴.
// ""안의 값은 xml파일에서 id=""안의 값
// 두 번째 매개 변수는 객체 생성하려는 클래스
        Sub sub = ctx.getBean("sub", Sub.class);
        System.out.println("티스토리 블로그하는 " + sub.getName());
        
    }
}
 
cs

sample.xml => src/main/resources

1
2
3
4
5
6
7
8
9
10
11
<?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">
 
    <bean id="sub" class="smaple.Sub">
        <property name="name" value="알통몬"/>
    </bean>
 
</beans>
 
cs


어떤 관계인지 보이시나요?

가장 먼저 

new 연산자는 xml 파일의 <bean> 태그와 대치됩니다.

그리고 객체 생성 시 setName() 했던 부분은

<property 와 대치되는데요.

name="" 에는 setter 에서 set을 뺀 즉, 필드이름과 같게 넣어주시면 되고요,

value="" 에 setName("") 처럼 값을 넣어주시면 됩니다.

그리고 DI를 적용하고자 하는 클래스에 필드가 존재한다면 꼭 setter도 같이 존재해야 합니다.


위 두 방법을 실행해 보면 실행 결과는 같습니다.

단 스프링을 적용한 방법에서는 로그가 같이 출력됩니다.

이상입니다.


다음 포스팅에서는 DI를 xml로 또는 java 코드로 

적용하는 방법에 대해 알아보겠습니다.


반응형