본문 바로가기
Spring, Springboot

스프링 calc계산

by jyee 2023. 4. 7.
728x90
반응형

오늘 수업 후기 

원래도 힘들어 하지만 더 힘들다...!

 

오늘 수업 정리정리

 

Maven은 왜 쓰냐 

spring 쓸 때 선생님이 패키지 두개 만들어서 비교 한다고 했는데 

예를 들면 chapter02 그리고 chapter02 _springmaven 이런 식으로 만드셨다. 

그래서 왜 쓰는거지?  궁금해서 뒤늦게 찾아봄 ;;;;

 

Maven

- 메이븐은 내가 사용할 라이브러리뿐만 아니라 해당 라이브러리가 작동하는데 필요한 다른 라이브러리들까지 관리하여 네트워크를 통해서 자동으로 다운받아 준다.

- 필요한 라이브러리를 특정 문서(pom.xml)에 정의해 놓으면 네트워크를 통해서 라이브러리들을 자동으로 다운 받아 준다.

- 따라서 메이븐을 사용하면 jar 파일을 공유하고 카톡으로 보내는 등의 쓸모없는 짓을 할 필요 없이 pom.xml에 필요한 것을 명시해 놓으면 라이브러리를 아주 쉽게 관리할 수 있다.

- 메이븐은 프로젝트의 전체적인 라이프 사이클을 관리하는 도구이며 최근에는 메이븐과 같은 라이브러리 관리 프로그램인 Gradle이 많이 사용되고 있다.

 

여튼 보고 나니 jar 파일 없이 한다는 걸 알게 되었다. 

 

수업 중 실습 

[문제1]

Project : chapter02

Package : sample02

Interface : Calc.java

추상Method : public void calculate();

Class : HelloSpring - main()

CalcAdd.java - 필드 x, y 설정 (생성자로 처리 )

CalcMul.java - 필드 x, y 설정 (setter)

 

[실행결과]

25 + 36 = xx

→ xml에서 CalcAdd를 빈(add)으로 Constructor Injection

 

25 * 36 = xx

→ xml에서 CalcMul를 빈(mul)으로 Setter Injection

 

이 경우 파일을 하나씩 만들어보자!

 

Calc.java

package sample02;

public interface Calc {
	public void calculate();

}

인터페이스 파일이며 만든 후 추상메소드  public void calculate(); 이 부분을 추가해줬다.

 

그다음 CalcAdd.java

package sample02;

public class CalcAdd implements Calc {
	private int x, y; 
	
	
	public CalcAdd(int x, int y) {
		super();
		this.x = x;
		this.y = y;
	}


	@Override
	public void calculate() {
		System.out.println(x + "+" + y + "=" +(x+y));

	}

}

CalcAdd.java -

파일을 만들기 전

인터페이스 파일 add꼭 해줘야 함 

choose interfaces에서 이름이 비슷하면 다른 프로젝트 파일을 가져올 수 있으니 확인 필요

 

 필드 x, y 설정 (생성자로 처리 )로 처리 하라고 되어 있어서 

먼저 x,y  선언 후 우 클릭- source - generate Constructor using Fields를 누르면 자동적으로 만들어짐

 

CalcMul.java

package sample02;

import lombok.Setter;

@Setter
public class CalcMul implements Calc {
	private int x , y;
//	public void setX(int x) {
//		this.x = x;
//	}
//	public void setY(int y) {
//		this.y = y;
//	}
	@Override
	public void calculate() {
		System.out.println(x + "x" + y + "=" +(x*y));

	}

}

lombok을 통해서 setter을 가져옴 

 

 

 

HelloSpring.java 

package sample02;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class HelloSpring {

	public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
		
		Calc calc;
		calc =(Calc) context.getBean("calcAdd");
		calc.calculate();
		
		calc = context.getBean("calcMul", Calc.class);
		calc.calculate();

	}

}

솔직히 이 코드 이해가 잘 안됨 그래서 지피티한테 물어봄

 

  1. sample02 패키지에 HelloSpring 클래스가 정의됩니다.
  2. org.springframework.context.ApplicationContext와 org.springframework.context.support.ClassPathXmlApplicationContext를 import 합니다.
  3. public static void main(String[] args) 메소드가 정의됩니다.
  4. ApplicationContext 인터페이스를 구현한 ClassPathXmlApplicationContext 클래스를 이용하여, 스프링 컨테이너를 생성합니다. applicationContext.xml 파일을 이용하여 스프링 컨테이너를 초기화합니다.
  5. Calc 인터페이스 타입의 변수 calc를 선언합니다.
  6. context를 이용하여 calcAdd 빈 객체를 가져옵니다. 가져온 빈 객체를 calc 변수에 대입합니다.
  7. calc 객체의 calculate() 메소드를 실행하여 덧셈 연산을 수행합니다.
  8. context를 이용하여 calcMul 빈 객체를 가져옵니다. 가져온 빈 객체를 calc 변수에 대입합니다.
  9. calc 객체의 calculate() 메소드를 실행하여 곱셈 연산을 수행합니다.

이 코드는 applicationContext.xml 파일에 정의된 CalcAdd와 CalcMul 빈 객체를 사용합니다. 이 빈 객체는 Calc 인터페이스를 구현한 클래스의 인스턴스를 생성하여, 덧셈과 곱셈 연산을 수행하는 기능을 제공합니다. HelloSpring 클래스에서는 ApplicationContext를 이용하여 이 빈 객체를 가져와서, calculate() 메소드를 호출하여 덧셈과 곱셈 연산을 수행합니다. 이를 통해 스프링 프레임워크의 IoC 컨테이너와 의존성 주입(DI) 기능을 간단하게 이해할 수 있습니다.

728x90
반응형