스프링
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 @어노테이션으로 관리하는 코드이다.