Java SPI 인 스 턴 스

4824 단어 자바
JAVA SPI 실례
JAVA SPI 인 스 턴 스
참고 하 다
단계
새 인터페이스
인터페이스 구현
my sql 실현oracle 실현
서비스 발견
새 디 렉 터 리 와 파일
서비스 구현 클래스 를 인터페이스 파일 에 기록 합 니 다

테스트

레 퍼 런 스
java 6 spi doc
순서
새 인터페이스
package com.petecc.platform.foodsafe.spi;

/**
 * @Description DatabaseInterface
 * @author tanw
 * @date 2015 7 24    4:01:32
 */
public interface DatabaseInterface {

    public void querySth();
}

실현 인터페이스
mysql 실현
package com.petecc.platform.foodsafe.spi;

/**
 * @Description MysqlQuery
 * @author tanw
 * @date 2015 7 24    4:02:15
 */
public class MysqlQuery implements DatabaseInterface {


    @Override
    public void querySth() {
        System.out.println("mysql database query something!");
    }

}

Oacle 구현
package com.petecc.platform.foodsafe.spi;

/**
 * @Description OracleQuery
 * @author tanw
 * @date 2015 7 24    4:02:15
 */
public class OracleQuery implements DatabaseInterface {

    @Override
    public void querySth() {
        System.out.println("oracle database query something!");
    }

}

서비스 발견
새 디 렉 터 리 와 파일
클래스 경로 에서/META-INF/services/디 렉 터 리 를 만 들 고 디 렉 터 리 에 텍스트 파일 을 넣 습 니 다.파일 이름 은 인터페이스 전체 이름 입 니 다.이 예 는 com.petecc.platform.foodsafe.spi.database 인터페이스 입 니 다.
서비스 구현 클래스 를 인터페이스 파일 에 기록 합 니 다.
com.petecc.platform.foodsafe.spi.database 인터페이스 파일 에서 한 줄 씩 구현 되 며,인터페이스 구현 클래스 의 전체 이름 을 입력 합 니 다.예 를 들 어 이 예 에서 파일 내용 은 다음 과 같 습 니 다.
com.petecc.platform.foodsafe.spi.MysqlQuery
com.petecc.platform.foodsafe.spi.OracleQuery

테스트
package com.petecc.platform.foodsafe.spi;

import java.util.ServiceLoader;

/**
 * @Description SPIMain
 * @author tanw
 * @date 2015 7 24    4:03:19
 */
public class SPIMain {
    public static void main(String[] args) {

        ServiceLoader loaders = ServiceLoader
                .load(DatabaseInterface.class);

        int i=0;

        for (DatabaseInterface in : loaders) {
            in.querySth();
            i++;
        }

        System.out.println();
        System.out.println("       :"+i);
    }
}

좋은 웹페이지 즐겨찾기