Spring의 장점
메이븐(Maven) VS 그래들(Gradle)
: Spring Framework에는 두가지 방식이 있다.
메이븐이 먼저 생겨났고 그래들이 후발, 쉽게 말하자면 메이븐이 원조이고 그래들은 점점 더 많이 사용하고 있는 후발주자,
하지만 점점 둘 다 하나로 통합되어가는 추세 (뒤로 갈수록 비슷해지는 경향이다)
수업에서는 메이븐 프로젝트로 진행
package first;
public interface Calculator {
// 반드시 오버라이딩 해야할 추상메서드 작성
public int cal(int firstNum, int secondNum);
}
package first;
public class Sum implements Calculator {
@Override
public int cal(int firstNum, int secondNum) {
int result = 0;
result = firstNum + secondNum;
return result;
}
}
package first;
public class Sub implements Calculator {
@Override
public int cal(int firstNum, int secondNum) {
int result = 0;
result = firstNum - secondNum;
return result;
}
}
객체 컨테이너를 사용하기
스프링 프레임워크에서는 클래스의 객체 생성 및 운영이 다르게 운영된다.
new 인스턴스를 생성하지 않고,
프로그램 시작시에 미리 생성&보관 하고 있다가 필요할 때 꺼내 쓰는 방법을 사용한다.
만들어진 인스턴스의 보관장소를 "스크링 컨테이너"라고 부른다.
현재 프로젝트에서 사용할 스프링 컨테이너는 applicationContext.xml이고, 기본 위치는 src/main/resources 폴더가 된다.
스프링 컨테이너에 담겨 있는 객체들을 Bean이라고 부른다.
스프링 컨테이너에 담겨 있는 빈을 필요할 때 꺼내 쓰려면 컨테이너의 사용권한을 갖고 있는 객체를 생성하여 사용한다.
(GenericApplicationContext 객체를 생성하여 사용)
package com.ezen.sp02;
public class WalkClass {
public void move() {
System.out.println("Walking~~!!");
}
}
package com.ezen.sp03.battery;
public interface Battery {
public int getBatteryValue();
}
package com.ezen.sp03.battery;
public class NomalBattery implements Battery{
int val;
@Override
public int getBatteryValue() {
return 0;
}
}
package com.ezen.sp03.battery;
public class ChargeBattery implements Battery{
int val;
@Override
public int getBatteryValue() {
return 0;
}
public void charge(int value) {
this.val = value;
}
}
class ElectronicRadio는 생성자에 전달인수가 필요하고 이때 전달인수는 Battery라는 객체이다.
ElectronicCar와 ElectronicRadio는컨테이너에서 Bean으로 만들려면 각각 다른 방법을 사용해야 한다.