Service 

    사용자 요구에 맞는 서비스를 담당

     

    Dao

    순수하게 자바만을 이용해서 데이터를 제공할 수 있도록해준다.

     

    유지보수를 용이하게 하기 위해서

    소스코드 없이 바꾸는 것, 결합력을 낮게 만들어주어야 한다.

     

    Dao인터페이스를 만들어서 사용해 결합력을 낮춰준다.

     

    DI

    객체의 생성과 조립을 위한 외부 설정으로 바꿔준다.


    DI(Dependency Injection) 종속성 주입 (부품 조립)

     

    B는 A의 부품이라고 생각한다면

     

    b가 Dependency 

    B b = new B();
    A a = new A();
    a.setB(b);

    a.setB(b); injection

     

    부품을 쉽게 바꿀 수 있다는 장점과 부품을 조립해야 되는 불편함이 있다.

     

    Dependency를 조립하기 위해서는 두 가지 방법이 있다.

    1. setter()를 통해 조립(위의 예제)

    2. 생성자를 통해 조립

    B b = newB();
    A a = new A(b);

     

    Spring은 객체를 생성해주는 역할을 해준다. 

     Dependency injection 해준다.

    => 스프링을 사용하는 기본적인 이유.


    스프링에 DI 명세서(주문서)를 만들어야 한다. 

    주문서는 xml 방법과 어노테이션 방법이 있다.

     

    IoC 컨테이너 -> 주문서에 입력된 내용대로 부품을 생성해서 담을수 있는 그릇역할

    1. 작은부품

    2. 큰부품

    3. 결합

    결합 순서가 역순이다. Inversion of Control


    Dependency를 직접 Injection 하기 => 스프링 사용 X

    간단한 출력예제

    Program.java

    package spring.di;
    
    import spring.di.entity.Exam;
    import spring.di.entity.NewIecExam;
    import spring.di.ui.ExamConsole;
    import spring.di.ui.GridExamConsole;
    import spring.di.ui.InlineExamConsole;
    
    public class Program {
    
    	public static void main(String[] args) {
    		
    		Exam exam = new NewIecExam();
    		//ExamConsole console = new InlineExamConsole(exam); //exam부품을 사용하는 DI
    		ExamConsole console = new GridExamConsole(exam); //스프링을 이용하면 소스코드를 변경하지 않아도 InlineExamConsole과 GridExamConsole을 바꿔 끼울수 있다. 
    		
    		console.print();
    		
    	}
    
    }

     

    Exam.java -> 인터페이스

    package spring.di.entity;
    
    public interface Exam {
    	int total();
    	float avg();
    }

    ExamConsole.java -> 출력하는 인터페이스

    package spring.di.ui;
    
    public interface ExamConsole {
    	void print();
    }

     

    NewIecExam.java -> 계산해주는 객체

    package spring.di.entity;
    
    public class NewIecExam implements Exam {
    	
    	private int kor;
    	private int eng;
    	private int math;
    	private int com;
    	
    	@Override
    	public int total() {
    		// TODO Auto-generated method stub
    		return kor+eng+math+com;
    	}
    
    	@Override
    	public float avg() {
    		// TODO Auto-generated method stub
    		return total() / 4.0f;
    	}
    
    }

     

    InlineExamConsole.java 

    package spring.di.ui;
    
    import spring.di.entity.Exam;
    
    public class InlineExamConsole implements ExamConsole {
    	
    	private Exam exam;
    	
    	public InlineExamConsole(Exam exam) {
    		this.exam = exam;
    	}
    
    	@Override
    	public void print() {
    		System.out.printf("total is %d, avg is %f\n ", exam.total(), exam.avg());
    	}
    
    }

     

    GridExamConsole.java

    package spring.di.ui;
    
    import spring.di.entity.Exam;
    
    public class GridExamConsole implements ExamConsole {
    	
    	private Exam exam;
    	
    	public GridExamConsole(Exam exam) {
    		this.exam = exam;
    	}
    	
    	@Override
    	public void print() {
    		System.out.println("--------------");
    		System.out.println("total | avg");
    		System.out.println("------------");
    		System.out.printf("%3d | %3.2f \n" , exam.total(), exam.avg());
    		System.out.println("--------------");
    	}
    
    }

    Spring DI를 위한 이클립스 플러그인 설치하기

    xml 방식스프링이 제시하고 있는 지시서 양식에 따라서 지시해야 한다. -> 플러그인을 설치해서 도움을 받음

     

    xml 설정파일을 대체하기 위해서 플러그인을 설치한다.

     

    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기
    loading