우선 새 프로젝트를 생성하자.
이번에도 Simple Spring Maven 을 선택 하면 되.
프로젝트가 생성되면 클래스 들이 있어야 겠지?
Main 클래스를 생성하고
학생 클래스도 생성해 줘야지.
지난 포스트와 마찬가지로 이 클래스는 이미 만들어져 있는 걸 받아왔다고 가정할게.
이렇게 가정하는 이유는 스프링이 기존의 클래스들을 어떻게 재활용 하는지 보여주기 위해서 인것 같아.
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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | package com.aristatait.spring; //기존에 있던 클래스라고 가정 public class Student { //멤버변수 private String name; private String age; private String gradeNum; private String classNum; //생성자 public Student(String name, String age, String gradeNum, String classNum) { super(); this.name = name; this.age = age; this.gradeNum = gradeNum; this.classNum = classNum; } //Getter Setter public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getGradeNum() { return gradeNum; } public void setGradeNum(String gradeNum) { this.gradeNum = gradeNum; } public String getClassNum() { return classNum; } public void setClassNum(String classNum) { this.classNum = classNum; } } | cs |
위의 Student.java 파일을 아래와 같이 재활용 해 봤어.
StudentInfo.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 | package com.aristatait.spring; //has a 관계로 클래스 생성 public class StudentInfo { private Student student; // <== 여기 중요 !! public StudentInfo(Student student) { super(); this.student = student; } public void getStudentInfo(){ if(student!=null){ System.out.println("이름 : " + student.getName()); System.out.println("나이 : " + student.getAge()); System.out.println("학년 : " + student.getGradeNum()); System.out.println("반 : " + student.getClassNum()); System.out.println("=============================="); } } public void setStudent(Student student) { this.student = student; } } | cs |
스프링에서 클래스를 재활용하는 방법은 자바와 달리 포함관계(Have a 관계 or Has a 관계)를 사용해.
StudentInfo.java 소스에서 6번 라인을 보면 Student 클래스 타입의 변수 student 가 선언되었어.
보통의 자바 프로그래밍에서 위와 같은 변수를 사용하기 위해서는 생성자 안에
student = new Student(); 와 같은 문장이 필요 했을 거야.
하지만 스프링에서는 객체의 생성을 xml 리소스에 위임(?) 하기 때문에 위와 같은 문장이 필요가 없대.
8번 라인을 보면 StudentInfo 생성자의 매개변수로 Student 클래스가 사용되는걸 볼 수 있어.
이로 인해서 StudentInfo 클래스는 Student 클래스의 Properties 를 포함하는 클래스가 된것이지.
이제 좀 전에 말한 xml 리소스 파일을 만들자.
리소스 파일은 리소스 폴더에 만드는게 좋아.
적당히 이름을 만들어 주고 Finish !
리소스 파일을 열어서 하단의 Overview 탭을 선택하면 위와 같은 화면을 볼 수 있을 거야.
New Bean 버튼을 눌러서
아이디와 클래스를 입력해 주면 되.
여기서 클래스는 Browse 를 클릭하여 검색을 하면 쉽게 입력 할 수 있어.
대충 느낌 오지??
이 방법으로 Student1, Student2, StudentInfo Bean을 생성하였어.
참고로 Student1 과 Student2 의 클래스는 둘다 Student 야.
하단의 Source 탭을 선택해 내용물(?)을 채워 주자.
applicationCTX.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 26 27 28 29 30 31 32 33 | <?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="student1" class="com.aristatait.spring.Student"> <constructor-arg> <value>홍길동</value> </constructor-arg> <constructor-arg> <value>10살</value> </constructor-arg> <constructor-arg> <value>3학년</value> </constructor-arg> <constructor-arg> <value>2반</value> </constructor-arg> </bean> <bean id="student2" class="com.aristatait.spring.Student"> <constructor-arg value="홍삼삼"/> <constructor-arg value="9살"/> <constructor-arg value="2학년"/> <constructor-arg value="1반"/> </bean> <bean id="studentInfo" class="com.aristatait.spring.StudentInfo"> <constructor-arg> <ref bean="student1"/> </constructor-arg> </bean> </beans> | cs |
일부러 Student1 과 Student2의 내용물(?)을 채우는 방법을 달리 해봤어.
하지만 둘다 결과는 같아.
편한 방법을 사용하면 되.
그리고 StudentInfo 는 Student1 의 내용물을 ref(reference : 참고하다) 하고 있어.
아마도 StudentInfo 를 동작시키면 Student1 의 내용물(?)이 나올것 같지?
자 이제 파일을 실행해 볼게
Main 클래스에 코드를 작성해야 겠지?
MainClass.java 소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | package com.aristatait.spring; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.GenericXmlApplicationContext; public class MainClass { public static void main(String[] args) { String configLocation = "classpath:applicationCTX.xml"; AbstractApplicationContext ctx = new GenericXmlApplicationContext(configLocation); StudentInfo studentInfo = ctx.getBean("studentInfo",StudentInfo.class); studentInfo.getStudentInfo(); Student student2 = ctx.getBean("student2",Student.class); studentInfo.setStudent(student2); studentInfo.getStudentInfo(); ctx.close(); } } | cs |
이전 포스트와 동일하게 클래스패스를 잡아주고,
클래스패스에서 bean 들을 가져와서 객체를 생성해 줬어.
클래스 내부에 만들어져 있던 메소드를 호출해 보면...
짜잔 !!!
뭐 대충 이런것 이라고 하네...
이 포스트는 여기까지 그럼 ㅂㅂ2
'Spring > Spring 수업' 카테고리의 다른 글
Spring 08. 모델 2 방식과 스프링 MVC (0) | 2016.10.17 |
---|---|
Spring 07. MyBatis 연결 설정하기 (3) | 2016.09.08 |
Spring 05. 스프링 맛보기 Calculator (0) | 2016.09.07 |
Spring 04. MySQL 설정과 Spring 테스트 (0) | 2016.09.07 |
Spring 03. Tomcat 8 설치 및 사용 (0) | 2016.09.07 |