- 스프링은 자바기반 프레임워크
- JSP 선행 필요
주요기능
- DI : Defendency Injection
- 구성요소간의 의존 관계가 외부의 설정파일을 통해 정의되는 방식
- 코드 재사용성 증대
- AOP : 관점 지향 프로그래밍
- 로깅, 트랜잭션, 보안 등 여러 모듈에서 공통적으로 사용하는 기능을 분리하여 관리할 수 있다.
- AspectJ를 포함하여 사용할 수 있고, 스프링에서 지원하는 실행에 조합하는 방식도 지원한다.
- MVC : 모델 뷰 컨트롤
- JDBC : Java Data Base Connetor
- spring-code : 스프링의 핵심인 DI와 IoC 제공
- spring-aop
- spring-jdbc : DB를 적은 코드로 다룰수 있는 기능 제공
- spring-tc : 트랜잭션 관련 기능
- spring-webmvc
- 해당 모듈들을 사용하려면, 모듈에 대한 의존설정을 개발 프로젝트 XML에 개발자가 직접 한다 => 라이브러리를 임포트할 필요가 없다?
Inversion of Control
외부 라이브러리 코드가 개발자의 코드를 호출하게 된다. 제어권이 프레임 워크에게 있어 필요에 따라 스프링 프레임워크가 사용자의 코드를 호출한다.
-
Java는 OOP, Java로 만들어진 스프링
-
컨테이너 : 객체(Bean)를 생성 조립
-
Bean : 컨테이너를 통해 생성된 객체, Object
-
XML 문서 : 객체생성 및 속성 데이터 작성
-
컨테이너 : 객체(Bean) 생성 및 조립
-
개발문서(.java) : 애플리케이션 구현
// lec01 > MainClass.java
package lec01;
import operator.CalAdd;
public class MainClass {
public static void main(String[] args) {
MyCalculator calculator; // 타입 레퍼런스
calculator = new MyCalculator( 1, 2, new CalAdd());// 객체 생성
calculator.result(); // 객체 인자 CalSub, CalMul, CalDiv
}
}
// operator > Calculator.java
package operator;
public interface Calculator { //인터페이스
public int sum(int firstNum, int secondNum);
}
// lec01 > MyCalculator.java
package lec01;
import operator.Calculator;
public class MyCalCulator { // 클래스
public int fNum, sNum;
public Calculator calculator;
//생성자
public MyCalculator(int fNum, int sNum, Calculator calculator) {
this.fNum = fNum;
this.sNum = sNum;
this.calculator = calculator
}
public void result() {
int value = calculator.sum(this.fNum, this.sNum);
System.out.println("result : " + value);
}
public Calculator getCalculator() {
return calculator;
}
public void setCalculator(Calculator calculator) {
this.calculator = calculator;
}
public int getfNum() {
return fNum;
}
public void setfNum(int fNum) {
this.fNum = fNum;
}
}
// operator > CalAdd.java
package operator;
public class CalAdd implements Calculator{
@Override
public int sum(int firstNum, int secondNum){
return firstNum + SecondNum;
}
}