스프링

spring xml, @어노테이션 같이 사용한 DI

코드 죄수 2022. 10. 25. 19:58

java로 만든 객체를 xml로 관리하여 객체주입 받는 방법과 

xml로 만든 객체를 @어노테이션으로 객체주입 받는 방법이 있다.

 

 

Main.java

public class MainClass {

    public static void main(String[] args) {
        AbstractApplicationContext ctx 
        	= new GenericXmlApplicationContext("classpath:applicationCTX.xml");
                
         Student student1 = ctx.getBean("student1", Student.class);
        System.out.println("이름 : " + student1.getName());
        System.out.println("나이 : " + student1.getAge());
        System.out.println("취미 : " + student1.getHobbys());
        System.out.println("신장 : " + student1.getHeight());
        System.out.println("몸무게 : " + student1.getWeight());
    }
}

xml을 통하여 객체를 주입 받을 것임

 

 

AppcationContext.java

@Configuration
public class AppcationConfig {

    @Bean
    public Student student1(){
        ArrayList<String> hobbys = new ArrayList<String>();
        hobbys.add("수영");
        hobbys.add("요리");
        Student student = new Student("홍길동","20",hobbys);

        student.setHeight(180);
        student.setWeight(70);
        return student;
    }
}

java로 객체를 만듦

 

 

applicationCTX.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"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

<context:annotation-config />
    <bean class="com.example.xmljava.AppcationConfig" />
    
</beans>

java로 만든 객체를 xml에서 관리하여 다룸

 

이처럼 코드를 만들면 자바로 만든 객체도 xml에서 관리가 가능하다.

 

 

 

반대로 xml로 만든 객체를 java로 관리하는 방법이다.

 

Main.java

public class MainClass {

    public static void main(String[] args) {
        AnnotationConfigApplicationContext ctx
                = new AnnotationConfigApplicationContext(AppcationConfig.class);
        
        Student student1 = ctx.getBean("student1", Student.class);
        System.out.println("이름 : " + student1.getName());
        System.out.println("나이 : " + student1.getAge());
        System.out.println("취미 : " + student1.getHobbys());
        System.out.println("신장 : " + student1.getHeight());
        System.out.println("몸무게 : " + student1.getWeight());
    }
}

 

AppcationConfig.java

@Configuration
@ImportResource("classpath:applicationCTX.xml")
public class AppcationConfig {
}

@ImportResource로 xml에 있는 객체를 확인하여 넘겨 줄 수 있게 된다.

 

 

 

applicationCTX.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"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

 <bean id="student1" class="com.example.xmljava.Student">
        <constructor-arg value="홍길순" />
        <constructor-arg value="30" />
        <constructor-arg>
            <list>
                <value>마라톤</value>
                <value>요리</value>
            </list>
        </constructor-arg>
        <property name="height" value="180" />
        <property name="weight" value="70" />
    </bean>
</beans>

 

xml로 객체를 만들고 java @어노테이션으로 관리하는 코드이다.