공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
지난 두 번의 포스팅에서 DI를 XML에서 하는 방법과 JAVA 클래스 파일에서 하는 방법에 대해서
알아보았는데요.
2017/12/28 - [Spring(스프링)] - 스프링(Spring) DI설정방법[1] : DI in XML
2018/01/02 - [Spring(스프링)] - 스프링(Spring) DI설정방법[2] : DI in JAVA
이번 포스팅에서는 섞어쓰는 방법에 대해 알아보겠습니다.
1. XML을 기반으로 JAVA 클래스 혼용
총 3 개의 클래스와 1 개의 xml 스프링설정파일이 필요합니다.
클래스 구성은 DI in JAVA 와 같습니다.
Student.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | package org.mon.altong.di.java_in_xml; import java.util.ArrayList; public class Student { private String name; private ArrayList<String> hobbys; private double height; public Student(String name, ArrayList<String> hobbys) { this.name = name; this.hobbys = hobbys; } public String getName() { return name; } public void setName(String name) { this.name = name; } public ArrayList<String> getHobbys() { return hobbys; } public void setHobbys(ArrayList<String> hobbys) { this.hobbys = hobbys; } public double getHeight() { return height; } public void setHeight(double height) { this.height = height; } } | cs |
AppConfig.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | package org.mon.altong.di.java_in_xml; import java.util.ArrayList; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration // 스프링 설정에 사용되는 클래스라는 것을 명시해주는 어노테이션 public class AppConfig { @Bean public Student student1() { ArrayList<String> hobbys = new ArrayList<String>(); hobbys.add("Workout"); hobbys.add("Watching TV"); Student student = new Student("앑통몬", hobbys); student.setHeight(173); return student; } @Bean public Student student2() { ArrayList<String> hobbys = new ArrayList<String>(); hobbys.add("Workout2"); hobbys.add("Watching TV2"); Student student = new Student("근육몬", hobbys); student.setHeight(175); return student; } } | cs |
javaInXmlContext.xml
Namespaces 탭에서 context를 체크해줍니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?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-4.3.xsd"> <context:annotation-config/> <bean class="org.mon.altong.di.java_in_xml.AppConfig"/> <!-- <bean> .... </bean> 필요하다면 DI in XML 처럼 bean을 추가해서 사용하면 됩니다. --> </beans> | cs |
Running.java
마지막으로 실행클래스입니다.
코드를 보면 스프링 설정 정보는 전부 AppConfig.java 클래스에 들어가 있는데,
스프링컨텍스트는 javaInXmlContext.xml 파일을 불러오는 걸 볼 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | package org.mon.altong.di.java_in_xml; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.GenericXmlApplicationContext; public class Running { public static void main(String[] args) { AbstractApplicationContext ctx = new GenericXmlApplicationContext("classpath:javaInXmlContext.xml"); Student student1 = ctx.getBean("student1", Student.class); System.out.println(student1.getName()); System.out.println(student1.getHobbys()); System.out.println(student1.getHeight()); Student student2 = ctx.getBean("student2", Student.class); System.out.println(student2.getName()); System.out.println(student2.getHobbys()); System.out.println(student2.getHeight()); ctx.close(); } } | cs |
2. JAVA 클래스를 기반으로 XML 혼용
Student.java 는 1번과 같습니다.
xmlInJavaContext.xml 사용할 스프링 설정 .xml을 만들어줍니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?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="student2" class="org.mon.altong.di.xml_in_java.Student"> <constructor-arg name="name" value="근육몬"/> <constructor-arg> <list> <value>Workout2</value> <value>Watching TV2</value> </list> </constructor-arg> <property name="height" value="175"/> </bean> </beans> | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | package org.mon.altong.di.xml_in_java; import java.util.ArrayList; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.ImportResource; @Configuration // 스프링 설정에 사용되는 클래스라는 것을 명시해주는 어노테이션 @ImportResource("classpath:xmlInJavaContext.xml") public class AppConfig { @Bean public Student student1() { ArrayList<String> hobbys = new ArrayList<String>(); hobbys.add("Workout"); hobbys.add("Watching TV"); Student student = new Student("앑통몬", hobbys); student.setHeight(173); return student; } } | cs |
Running.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | package org.mon.altong.di.xml_in_java; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class Running { public static void main(String[] args) { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class); Student student1 = ctx.getBean("student1", Student.class); System.out.println(student1.getName()); System.out.println(student1.getHobbys()); System.out.println(student1.getHeight()); Student student2 = ctx.getBean("student2", Student.class); System.out.println(student2.getName()); System.out.println(student2.getHobbys()); System.out.println(student2.getHeight()); ctx.close(); } } | cs |
직접 타이핑 해 보시면 쉽게 이해가 되실거에요.
궁금하신 부분이나, 이해가 안되는 부분은 댓글 남겨주시면 되겠씁니다~~
이상입니다.
감사합니다.
'Spring(스프링), Spring Boot(스프링부트), JSP' 카테고리의 다른 글
스프링(spring) AOP란? spring AOP 구현하기[1] : xml 스키마로 구현 (0) | 2018.01.05 |
---|---|
스프링(Spring) 스프링 컨테이너, 스프링 빈 생명주기 (0) | 2018.01.04 |
스프링(Spring) DI설정방법[2] : DI in JAVA (0) | 2018.01.02 |
스프링(Spring) DI설정방법[1] : DI in XML (0) | 2017.12.28 |
스프링(Spring) new 연산자를 이용한 객체생성과 DI를 이용한 객체생성의 관계 (0) | 2017.12.28 |