2022.09.30 Spring

sofia·2022년 10월 11일
0

Spring

목록 보기
1/11
post-thumbnail

스프링 파일 강사님이 다시 배포한 것으로 사용(기존의 것 오류발생)

Spring tool suit 3 사용
→ 내장된 톰캣 존재함


사용할 파일은 Spring Legacy Project

chap 1. Spring이란?

프레임워크

  • 프론트 엔드
    - AngularJS, React, Bootstrap, Vue.js, etc(Node.js, Nexacro[MiPlatform, XPlatform], WebSquare)

  • 백엔드
    - Structs, Spring, Spring Boot, 전자정부, etc(Laf/J, DevOn)
    - 스프링 부트를 사용해도 됨.(설정이나 가르치기 쉬움)
    - JSP->Structs->Spring 순으로 발전

    Spring web project 2가지

  1. Spring Starter Project : Spring Boot 이용
  • 개발자가 복잡한 설정 없이 모든 개발 환경이 준비되기 때문에 초보 개발자도 쉽게 웹 프로젝트를 만들 수 있다.
  • Embed Tomcat을 사용하기 때문에 따로 톰켓을 설치하거나 매번 버전 관리를 하지 않아도 된다.
  • dependency 자동화
  • XML 설정을 하지 않아도 된다.
  1. Spring Legacy Project : JDBC 템플릿을 이용
  • 조금 복잡 하기는 하나 실제 개발 업무에서 많이 사용하는 방식이다.
    (전자정부 프레임워크로 넘어가기 편하기 때문)

Spring에서 사용될 언어 및 지식들

  • JAVA 언어 기반
  • JAVA언어 및 JSP&Servlet 선행학습
  • HTML,CSS,JS,jQuery 등 스크립트 언어

chap 2. Spring Project 생성

DI(Dependency Injection) 의존성 주입

스프링의 주요 특징 중 하나로 여기서는 객체간의 의존을 의미함

  • 의존 : 변경에 의해 영향을 받는 관계

DI는 의존하는 객체를 직접 생성하는 대신 의존객체를 전달 받는 방식으로 외부에서 객체를 생성하여 주입함

⇒ 각 객체간의 의존성을 스프링 컨테이너가 자동으로 연결해주는 것으로 Bean 설정 파일에 의존관계가 필요한 정보를 추가하면 스프링 컨테이너가 자동적으로 연결함.

  • 두가지 방법으로 존재
  1. . 으로 접근 하는 방법

  2. setter()나 construct()로 접근 하는 방법

    두 가지 방법 다 B와 C는 A객체에 의존적

    모듈 간의 결합도가 낮아지고 유연성이 높아짐

IOC (Inversion of Control) 제어의 역전

  • 메소드나 객체의 호출 작업을 개발자가 결정하는것이 아니라 외부에서 결정되는 것
    제어의 흐름을 바꿈

  • 의존성을 역전 시켜 객체간의 결합도를 줄이고 유연한 코드 작성가능. 유지보수 편해짐

여기서 IOC 컨테이너는 객체가 담겨있는 컨테이너이며, A에서 IOC컨테이너 속의 객체들을 제어 할 수있음(역전 발생)

Maven(빌드관리 도구)

  • 프로젝트에서 작성한 java 코드와 프로젝트 내에 필요한 각종 xml, properties, jar 파일들을 JVM이나 WAS가 인식할 수 있도록 패키징해주는 빌드 과정을 "빌드 자동화 도구" 라고 보면 된다.
  • 즉, 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 전용 프로그램이라고 할 수 있다.
  • 애플리케이션을 개발하면서, 일반적으로 개발에 필요한 다양한 외부 라이브러리들을 다운로드 하고, 해당 라이브러리를 사용하여 개발해야하는 상황이 많은데 그 때마다 라이브러리들을 번거롭게 모두 다운 받을 필요 없이 빌드 도구 설정 파일에 필요한 라이브러리 종류와 버전들, 종속성 정보를 명시하여 필요한 라이브러리들을 설정 파일을 통해 자동으로 다운로드 해주고 이를 간편히 관리해 주는 도구

예제 1

  1. Spring Legacy project 생성


Calculation.java

package com.javalec.spring_2_1;

public class Calculation {
	private int firstNum;
	private int SecondNum;
	
	public void add() {
		System.out.println("add");
		System.out.println(firstNum+"+"+SecondNum+"="+(firstNum+SecondNum));
	}

	public void sub() {
		System.out.println("sub");
		System.out.println(firstNum+"-"+SecondNum+"="+(firstNum-SecondNum));
	}
	
	public void mul() {
		System.out.println("mul");
		System.out.println(firstNum+"*"+SecondNum+"="+(firstNum*SecondNum));
	}
	
	public void div() {
		System.out.println("div");
		System.out.println(firstNum+"/"+SecondNum+"="+(firstNum/SecondNum));
	}
	
	public int getFirstNum() {
		return firstNum;
	}
	public void setFirstNum(int firstNum) {
		this.firstNum = firstNum;
	}
	public int getSecondNum() {
		return SecondNum;
	}
	public void setSecondNum(int secondNum) {
		SecondNum = secondNum;
	}
	
}

MainClass.java

package com.javalec.spring_2_1;

public class MainClass {
	public static void main(String[] args) {
		Calculation calculation = new Calculation();
		calculation.setFirstNum(10);
		calculation.setSecondNum(2);
		
		calculation.add();
		calculation.sub();
		calculation.mul();
		calculation.div();
	}
}

calculation객체가 MainClass에 의존적이다. ⇒ IoC(Inversion of Control, 제어의 역전)

예제 2


Circle.java

package com.javalec.spring_ex2_1;

public class Circle {
	private int radius;

	
	
	public int getRadius() {
		return radius;
	}

	public void setRadius(int radius) {
		this.radius = radius;
	}

	public void Circle_area() {
		System.out.println("원의 면적은 "+radius*radius*3.14);
	}
}

Rectangel.java

package com.javalec.spring_ex2_1;

public class Rectangel {
	private int width;
	private int height;

	
	
	public int getWidth() {
		return width;
	}

	public void setWidth(int width) {
		this.width = width;
	}

	public int getHeight() {
		return height;
	}

	public void setHeight(int height) {
		this.height = height;
	}

	public void Rectangel_area() {
		System.out.println("사각형의 면적은 "+ (width*height));
	}

}

Draw.java

package com.javalec.spring_ex2_1;

public class Draw {
	public static void main(String[] args) {
		Circle circle = new Circle();
		Rectangel rectangel = new Rectangel();
		
		circle.setRadius(10);
		rectangel.setWidth(20);
		rectangel.setHeight(30);
		
		
		circle.Circle_area();
		rectangel.Rectangel_area();
	}
}

예제3

Season.java

package com.javalec.spring_ex_2_2;

public class Season {
	private int month;

	public int getMonth() {
		return month;
	}

	public void setMonth(int month) {
		this.month = month;
	}
	
	public void Season_if() {
//		if (2<month && month<6) {
//			System.out.println("봄");
//		}else if (5<month && month<9) {
//			System.out.println("여름");			
//		}else if (8<month && month<12) {
//			System.out.println("가을");			
//		}else if(month<3 || month==12 ) {
//			System.out.println("겨울");
//		}
//	
//		
		switch (month) {
		case 3:
		case 4:
		case 5:
			System.out.println("봄");
			break;
		case 6:
		case 7:
		case 8:
			System.out.println("여름");
			break;
		case 9:
		case 10:
		case 11:
			System.out.println("가을");
			break;
		case 12:
		case 1:
		case 2:
			System.out.println("겨울");
			break;

		default:
			break;
		}
	}
}

Won2dollar.java

package com.javalec.spring_ex_2_2;

public class Won2dollar {
	private int won;

	public int getWon() {
		return won;
	}

	public void setWon(int won) {
		this.won = won;
	}
	
	public void process() {
		System.out.println("$"+won/1200.0);
	}
}

SeasonDallar.java

package com.javajavalecelc.spring_ex_2_2;

public class SeasonDallar {
	public static void main(String[] args) {
		
		Season season = new Season();
		Won2dollar won2dollar = new Won2dollar();

		season.setMonth(9);
		season.Season_if();

		won2dollar.setWon(3300);
		won2dollar.process();
	}
}

예제 4

Three.java

package com.javalec.spring_ex2_3;

public class Three {
	private int three;
	

	public int getThree() {
		return three;
	}

	public void setThree(int three) {
		this.three = three;
	}

	public void process() {
		if (three%3 ==0) {
			System.out.println("3의 배수입니다.");
		}else {
			System.out.println("3의 배수가 아닙니다.");
		}
	}
}

DivAndRemains.java

package com.javalec.spring_ex2_3;

public class DivAndRemains {
	private int Num;

	public int getNum() {
		return Num;
	}

	public void setNum(int num) {
		Num = num;
	}
	
	public void process() {
		int ten =Num/10;
		int one =Num%10;
		
		if (ten == one) {
			System.out.println("10의 자리와 1의 자리가 같습니다.");
		}else {
			System.out.println("10의 자리와 1의 자리가 다릅니다.");
		}
	}
}

ThreeDivAndRemains.java

package com.javalec.spring_ex2_3;

public class ThreeDivAndRemains {
	public static void main(String[] args) {
		Three three = new Three();
		DivAndRemains divandremains = new DivAndRemains();
		
		three.setThree(129);
		three.process();
		
		divandremains.setNum(77);
		divandremains.process();
	}
}

예제 5

Rectangle.java

package com.javalec.spring_ex2_4;

public class Rectangle {
	private int x;
	private int y;
	public int getX() {
		return x;
	}
	public void setX(int x) {
		this.x = x;
	}
	public int getY() {
		return y;
	}
	public void setY(int y) {
		this.y = y;
	}
	
	
	public void process() {
		if ((100<= x && x<=200) && (100<= y && y<=200)) {
			System.out.println("("+x+","+y+")는 사각형 안에 있습니다.");
		}else {
			System.out.println("("+x+","+y+")는 사각형 안에 없습니다.");
		}
	}
	
}

Median.java

package com.javalec.spring_ex2_4;

public class Median {
	private int a;
	private int b;
	private int c;
	public int getA() {
		return a;
	}
	public void setA(int a) {
		this.a = a;
	}
	public int getB() {
		return b;
	}
	public void setB(int b) {
		this.b = b;
	}
	public int getC() {
		return c;
	}
	public void setC(int c) {
		this.c = c;
	}
	
	public void process() {
		if ( (b<a && a<c)|| (c<a && a<b)) {
			System.out.println("입력된 정수가 "+a+"와 "+b+"와 "+c+"의 중간값은 "+a);
		}else if ((a<b && b<c)|| (c<b && b<a)) {
			System.out.println("입력된 정수가 "+a+"와 "+b+"와 "+c+"의 중간값은 "+b);
		}else {
			System.out.println("입력된 정수가 "+a+"와 "+b+"와 "+c+"의 중간값은 "+c);
		}
	}
}

RectangleMedian.java

package com.javalec.spring_ex2_4;

public class RectangleMedian {
	public static void main(String[] args) {
		
	Rectangle rectangle = new Rectangle();
	Median median = new Median();
	
	rectangle.setX(150);
	rectangle.setY(150);
	rectangle.process();
	
	median.setA(20);
	median.setB(100);
	median.setC(33);
	
	median.process();
	}
	
}

예제 6

Multiple.java

package com.javalec.spring_ex2_5;

public class Multiple {
	private int Num;
	
	
	public int getNum() {
		return Num;
	}

	public void setNum(int num) {
		Num = num;
	}

	public void process() {
		boolean multiple = false;
		if (Num%3 == 0) {
			System.out.println("3의 배수이다.");
			multiple=true;
		}
		if (Num%5 ==0) {
			System.out.println("5의 배수이다.");
			multiple=true;
		}
		if (Num%8 ==0) {
			System.out.println("8의 배수이다.");
			multiple=true;
		}
		
		if (!multiple) {
			System.out.println("어느 배수도 아니다.");
		}
	}
}

Triangle.java

package com.javalec.spring_ex2_5;

public class Triangle {
	private int Num1;
	private int Num2;
	private int Num3;
	public int getNum1() {
		return Num1;
	}
	public void setNum1(int num1) {
		Num1 = num1;
	}
	public int getNum2() {
		return Num2;
	}
	public void setNum2(int num2) {
		Num2 = num2;
	}
	public int getNum3() {
		return Num3;
	}
	public void setNum3(int num3) {
		Num3 = num3;
	}
	
	
	public void process() {
		if (Num1+Num2<=Num3 || Num1+Num3<=Num2||Num2+Num3<=Num1) {
			System.out.println("삼각형이 되지 않습니다.");
		}else {
			System.out.println("삼각형이 됩니다.");
		}
	}
	
}

MultipleTriangle.java

package com.javalec.spring_ex2_5;

public class MultipleTriangle {
	public static void main(String[] args) {
		
	Multiple mul = new Multiple();
	
	Triangle tri = new Triangle();

	mul.setNum(240);
	mul.process();
	
	
	tri.setNum1(4);
	tri.setNum2(3);
	tri.setNum3(5);
	tri.process();
	}
}

예제 8

Asterisk.java

package com.javalec.spring_ex2_6;

public class Asterisk {
	private int n;

	public int getN() {
		return n;
	}

	public void setN(int n) {
		this.n = n;
	}
	
	
	public void process() {
		StringBuffer strBuf = new StringBuffer();

		for (int i = n; i >0; i--) { // n만큼 반복
			
			for (int j = 0; j < i; j++) {// j가 i(n)만큼 반복
				strBuf.append('*');
			}
			strBuf.append("\n");
		}
		System.out.println(strBuf.toString());
	}
}

Capital.java

package com.javalec.spring_ex2_6;

public class Capital {
	private String str;

	public String getStr() {
		return str;
	}

	public void setStr(String str) {
		this.str = str;
	}
	
	public void process() {
		StringBuffer strBuf = new StringBuffer();
		
		char c ='A';
		char c2 = str.charAt(0);
		
		for (char i = c2; i >= c; i--) {
			for (char j = c; j <= i; j++) {
				strBuf.append(j);
			}
			strBuf.append("\n");
		}
		System.out.println(strBuf.toString());
	}

	
}

AsteriskCapital.java

package com.javalec.spring_ex2_6;

public class AsteriskCapital {
	public static void main(String[] args) {
		Asterisk asterisk = new Asterisk();
		asterisk.setN(5);
		asterisk.process();
		
		
		Capital capital = new Capital();
		capital.setStr("F");
		capital.process();
	}
}

chap3. DI - 1

스프링을 이용한 객체 생성과 조립

  1. 스프링을 사용하지 않은 프로젝트의 경우

  2. 스프링을 사용한 프로젝트의 경우

스프링 코드 설명들

  1. String configLoc = "classpath:applicationCTX.xml";
    : 스프링 XML(객체 정보가 들어있음) 객체 정보를 받기 위해서 속성으로 classpath를 받는다.(환경 위치)

  2. AbstractApplicationContext ctx = new GenericXmlApplicationContext(configLoc);
    :클래스의 매개변수로 받음(configLoc) → 객체 정보를 해석 → ctx로 담음

  3. MyCalculator myCalculator = ctx.getBean("myCalculator", MyCalculator.class);
    : getBean 메소드를 사용함.MyCalculator.class를 참조 변수로 사용

스프링 설정 파일의 이해

 <bean id="calculator" class="com.javalec.ex.Calculator"/>
<bean id="myCalculator" class="com.javalec.ex.MyCalculator">
	
	<property name="calculator">
		<ref bean="calculator"/>
	</property>
	
	<property name="firstNum" value="10"/>
	<property name="secondNum" value="2"/>
</bean>

예제 1.

지금까지 한 방식대로 만들면

Calculator.java

package com.javalec.spring_3_1;

public class Calculator {
	public void addition(int f, int s) {
		System.out.println("addition()");
		int result = f+s;
		
		System.out.println(f+"+"+s+"="+result);
	}
	
	public void subtraction(int f, int s) {
		System.out.println("subtraction()");
		int result = f-s;
		
		System.out.println(f+"-"+s+"="+result);
	}
	
	public void multplication(int f, int s) {
		System.out.println("multplication()");
		int result = f*s;
		
		System.out.println(f+"*"+s+"="+result);
	}
	
	public void division(int f, int s) {
		System.out.println("division()");
		int result = f/s;
		
		System.out.println(f+"/"+s+"="+result);
	}
}

MyCalculator.java

package com.javalec.spring_3_1;

public class MyCalculator {
	private Calculator calculator;
	
	private int firstNum;
	private int secondNum;
	
	public void add() {
		calculator.addition(firstNum, secondNum);
	}
	
	public void sub() {
		calculator.subtraction(firstNum, secondNum);
	}
	
	public void mul() {
		calculator.multplication(firstNum, secondNum);
	}
	
	public void div() {
		calculator.division(firstNum, secondNum);
	}
	
	
	
	public Calculator getCalculator() {
		return calculator;
	}
	public void setCalculator(Calculator calculator) {
		this.calculator = calculator;
	}
	public int getFirstNum() {
		return firstNum;
	}
	public void setFirstNum(int firstNum) {
		this.firstNum = firstNum;
	}
	public int getSecondNum() {
		return secondNum;
	}
	public void setSecondNum(int secondNum) {
		this.secondNum = secondNum;
	}
	
}

MainClass.java

package com.javalec.spring_3_1;

public class MainClass {
	public static void main(String[] args) {
		MyCalculator myCalculator = new MyCalculator();
		myCalculator.setCalculator(new Calculator());
		
		
		myCalculator.setFirstNum(10);
		myCalculator.setSecondNum(2);
		
		myCalculator.add();
		myCalculator.sub();
		myCalculator.mul();
		myCalculator.div();
		
		
	}
}

객체 정보를 담고있는 CTX.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"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

	<!-- calculator Bean 객체 생성 -->
	<bean id="calculator" class="com.javalec.spring_3_2.Calculator"></bean>
	
	
	<bean id="myCalculator" class="com.javalec.spring_3_2.MyCalculator">
		<property name="calculator"> 
		<!--  calculator는  private Calculator calculator;의 calculator를 말함. -->
			<ref bean="calculator"/> 
			<!-- 여기서 말하는 bean="calculator" => 7번째 줄의  id="calculator" -->
		</property>
		<property name="firstNum" value="10"></property> <!-- property로 name과 value 세팅 -->
		<property name="secondNum" value="2"></property>
		<!-- 참조변수를 따라감.  -->
	</bean>

</beans>

MainClass.java

package com.javalec.spring_3_2;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

public class MainClass {
	public static void main(String[] args) {
//		MyCalculator myCalculator = new MyCalculator();
//		myCalculator.setCalculator(new Calculator());
//		
//		myCalculator.setFirstNum(10);
//		myCalculator.setSecondNum(2);
		
		
		String configLoc =  "classpath:applicationCTX.xml";//매개변수로 해서 
		AbstractApplicationContext ctx =  new GenericXmlApplicationContext(configLoc);//업캐스팅 발생
		MyCalculator myCalculator2 = ctx.getBean("myCalculator", MyCalculator.class);
//		<bean id="myCalculator" class="com.javalec.spring_3_2.MyCalculator">의 myCalculator가 들어감(참조변수로)
//		위치 어디인지 몰라 헤맬것 같아서 적어놓음 ctx.getBean("myCalculator", MyCalculator.class)의 "myCalculator"를 말하는 거임!!!!!
//		applicationCTX.xml 의 10~19까지의 객체 정보를 가지고 옴
		 
//		만약에  MyCalculator myCalculator2 = ctx.getBean("myCalculator", MyCalculator.class);의
//		"myCalculator"를 "myCalculator2" 로 바꾸면 오류가 발생함. "myCalculator2"로 하고싶으면
//		<bean id="myCalculator" class="com.javalec.spring_3_2.MyCalculator">의 id="myCalculator"를
//		id="myCalculator2" 로 바꿔야함
		
		myCalculator2.add();
		myCalculator2.sub();
		myCalculator2.mul();
		myCalculator2.div();
		
		
	}
}

예제 2

circle.java


package com.javalec.spring_ex_3_1;

public class Circle {
	public void area(int radius) {
		System.out.println("원의 면적은 "+(3.14*radius*radius));
	}
}

MyCircle.java

package com.javalec.spring_ex_3_1;

public class MyCircle {
	private Circle circle;
	
	private int radius;

	public void ar() {
		circle.area(radius);
	}
	
	
	
	public Circle getCircle() {
		return circle;
	}

	public void setCircle(Circle circle) {
		this.circle = circle;
	}

	public int getRadius() {
		return radius;
	}

	public void setRadius(int radius) {
		this.radius = radius;
	}
	
	
}

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

	<!-- Circle Bean 객체 생성 -->
	<bean id="circle" class="com.javalec.spring_ex_3_1.Circle"></bean>
	
	
	
	<bean id="mycircle" class="com.javalec.spring_ex_3_1.MyCircle">
		<property name="circle">
			<ref bean="circle"/>
		</property>
		<property name="radius" value="10"></property>
	</bean>
</beans>

MainCircle.java

package com.javalec.spring_ex_3_1;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

public class MainCircle {
	public static void main(String[] args) {
		String configLoc = "classpath:circleCTX.xml";
		AbstractApplicationContext ctx =  new GenericXmlApplicationContext(configLoc);
		MyCircle myCircle = ctx.getBean("myCircle",MyCircle.class);
		
		myCircle.ar();
	}
}

예제 3

Rectangle

package com.javalec.spring_ex3_2;

public class Rectangle {
	public void area(int width, int height) {
		System.out.println("사각형의 면적은 "+width*height);
	}
}

MyRectangle

package com.javalec.spring_ex3_2;

public class MyRectangle {
	private Rectangle rectangle;
	int width;
	int height;
	
	public void ar() {
		rectangle.area(width, height);
	}
	
	
	
	public Rectangle getRectangle() {
		return rectangle;
	}
	public void setRectangle(Rectangle rectangle) {
		this.rectangle = rectangle;
	}
	public int getWidth() {
		return width;
	}
	public void setWidth(int width) {
		this.width = width;
	}
	public int getHeight() {
		return height;
	}
	public void setHeight(int height) {
		this.height = height;
	}
}

rectangleCTX.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"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
	
	<bean id="rectangle" class="com.javalec.spring_ex3_2.Rectangle"/>
	
	<bean id="myRectangle" class="com.javalec.spring_ex3_2.MyRectangle">
		<property name="rectangle">
			<ref bean="rectangle"/>
		</property>
		<property name="width" value="4"></property>
		<property name="height" value="6"></property>
	</bean>
</beans>

MainRectangle.java

package com.javalec.spring_ex3_2;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

public class MainRectangle {
	public static void main(String[] args) {
		String configLoc = "classpath:rectangleCTX.xml";
		AbstractApplicationContext ctx =  new GenericXmlApplicationContext(configLoc);
		MyRectangle myRectangle = ctx.getBean("myRectangle",MyRectangle.class);
		
		myRectangle.ar();
	}
}

예제 4

Season.java

package com.javalec.spring_3_ex_3_3;

public class Season {
	public void rsltSeason(int month) {
		
		switch (month) {
		case 3: 
		case 4: 
		case 5: 
				System.out.print("입력된 정수가 "+month+"은 계절이 봄");
			break;
		case 6:
		case 7:
		case 8:
			System.out.println("입력된 정수가 "+month+"은 계절이 여름");
			
			break;
			
		case 9:
		case 10:
		case 11:
			System.out.println("입력된 정수가 "+month+"은 계절이 가을");
			break;
			
		case 12:
		case 1:
		case 2:
			System.out.println("입력된 정수가 "+month+"은 계절이 겨울");
			break;

		default:
			break;
		}
	}
}

MySeason.java

package com.javalec.spring_3_ex_3_3;

public class MySeason {
	private Season season;
	
	int month;

	public void result() {
		season.rsltSeason(month);
	}
	
	
	public Season getSeason() {
		return season;
	}

	public void setSeason(Season season) {
		this.season = season;
	}

	public int getMonth() {
		return month;
	}

	public void setMonth(int month) {
		this.month = month;
	}
	
}

seasonCTX.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"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
	
	<bean id="season" class="com.javalec.spring_3_ex_3_3.Season"/>

	<bean id="mySeason" class="com.javalec.spring_3_ex_3_3.MySeason">
		<property name="season">
			<ref bean="season"/>	
		</property>
		<property name="month" value="9"></property>
	</bean>

</beans>

MainSeason.java

package com.javalec.spring_3_ex_3_3;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

public class MainSeason {
	public static void main(String[] args) {
		String configLoc = "classpath:seasonCTX.xml";
		AbstractApplicationContext ctx =  new GenericXmlApplicationContext(configLoc);
		MySeason mySeason = ctx.getBean("mySeason",MySeason.class);
		
		mySeason.result();
	}
}

0개의 댓글