69일 차 - 스프링 (23.04.06)

yvonne·2023년 4월 6일
0

📂Spring

목록 보기
1/18
post-thumbnail

1. 스프링 문법

✔ MainClass.java

package com.javalec.ex;

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);
		 * 
		 * myCalculator.add(); myCalculator.sub(); myCalculator.mul();
		 * myCalculator.div();
		 */

		String configLocation = "classpath:applicationCTX.xml";
		AbstractApplicationContext ctx = new GenericXmlApplicationContext(configLocation); // ioc 컨테이너 생성
		MyCalculator myCalculator = ctx.getBean("myCalculator", MyCalculator.class);
		// myCalculator 객체의 원본이 MyCalculator.class라는 것을 알려주는 것

		myCalculator.add();
		myCalculator.sub();
		myCalculator.mul();
		myCalculator.div();
        }
 }
  • ✔ Calculator.java
package com.javalec.ex;

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 multiplication(int f, int s) {
		System.out.println("multiplication()");
		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.ex;

public class MyCalculator {

	Calculator calculator;
	private int firstNum;
	private int secondNum;
	
	public MyCalculator() {

	}

	public void add() {
		calculator.addition(firstNum, secondNum);
	}
	
	public void sub() {
		calculator.subtraction(firstNum, secondNum);
	}
	
	public void mul() {
		calculator.multiplication(firstNum, secondNum);
	}
	
	public void div() {
		calculator.division(firstNum, secondNum);
	}
	
	public void setCalculator(Calculator calculator) {
		this.calculator = calculator;
	}
	
	public void setFirstNum(int firstNum) {
		this.firstNum = firstNum;
	}
	
	public void setSecondNum(int secondNum) {
		this.secondNum = secondNum;
	}
}

✔ 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">
<!--  bean: 객체에 getter, setter를 가지고 있는 것  -->
	<bean id="calculator" class="com.javalec.ex.Calculator" /> 
	<!-- 객체 생성의 과정  MyCalculator calculator = new com.javalec.ex.Calculatr; / calculator.java 를 의미 -->
	
	<bean id="myCalculator" class="com.javalec.ex.MyCalculator">
		<property name="calculator"> <!--  myCalculator.setCalculator(calculator); -->
			<ref bean="calculator"/>
		</property>	
		<property name="firstNum" value="10" />  <!-- myCalculator.setFirtsNum(10) 호출 -->
		<property name="secondNum" value="2"></property> 
	</bean>

</beans>
  • 결과




📝 Pencil 예제

✔ Pencil.java

package com.javalec.ex;

public interface Pencil {
	public void use();
		
}

✔ Pencil4B.java

package com.javalec.ex;

public class Pencil4B implements Pencil {
	@Override
	public void use() {
		System.out.println("4B Pencil.");
	}	
	
}

✔ Pencil6B.java

package com.javalec.ex;

public class Pencil6B implements Pencil {
	@Override
	public void use() {
		System.out.println("6B Pencil.");
	}	
	
}

✔ applicationCTX2.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="pencil" class="com.javalec.ex.Pencil4B"></bean> -->
	<bean id="pencil" class="com.javalec.ex.Pencil6B"></bean>

</beans>

✔ MainClass.java

package com.javalec.ex;

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

public class MainClass {

	public static void main(String[] args) {  
   
		String configLocation = "classpath:applicationCTX2.xml";
		AbstractApplicationContext ctx = new GenericXmlApplicationContext(configLocation);
		Pencil pencil = ctx.getBean("pencil", Pencil.class);
		pencil.use();
		
	}

}
  • 결과

💡 <bean id="pencil" class="com.javalec.ex.Pencil4B"> 일 때

💡 <bean id="pencil" class="com.javalec.ex.Pencil6B">일 때






2. 스프링 MVC

  • ⭐ DI
  • ⭐ IOC
  • ⭐ IOC 컨테이너
  • ⭐ 스프링 MVC




📌 개발자들이 먼저 체크하는 순서

1) 메이븐 - pom.xml

  • 메이븐: 스프링에서 많이 사용 / 그래들: 안드로이드에서 사용
  • 빌드 자동화 도구: 컴파일, 실행, 테스트, 배포, 라이브러리 관리
  • 라이브러리 관리: pom.xml의 <dependency>로 의존성 관리 (https://mvnrepository.com/)

2) 스프링부트 기준 application.properties

profile
개발 연습장

0개의 댓글