JYaml으로 간편한 DI
의존성 주입 대상
우선, 의존성 주입처를 작성
Process.java
/**
* 依存性注入用の I/F.
*/
public interface Process {
public void process();
}
Configuration.java
/**
* Yaml を読み込むクラス.
*/
public class Configuration {
public Process p1;
public Process p2;
public Process p3;
}
실행 코드
이어서, 이것을 실행하는 메소드를 다음과 같이 정의
main.java
/**
* テストメソッド.
*/
public static void main(String[] args) throws Throwable {
Configuration configuration = Yaml.loadType(new File("configuration.yml"), Configuration.class);
configuration.p1.process();
configuration.p2.process();
configuration.p3.process();
}
Yaml.loadType에서 YAML 파일을로드하는 동안 종속성이 주입됩니다.
구현 클래스 준비
그리고 Process I/F 를 구현한 클래스를 준비
StrPrinter.java
/**
* 文字列を出力するクラス.
*/
public static class StrPrinter implements Process {
public String str;
@Override
public void process() {
System.out.println(str);
}
}
NumberPrinter.java
/**
* 数値を出力するクラス.
*/
public static class NumberPrinter implements Process {
public Integer number;
@Override
public void process() {
System.out.println(number);
}
}
YAML 준비
종속성을 정의한 YAML 파일 준비
configuration.yml
p1: !StrPrinter
str: 八 足す
p2: !StrPrinter
str: Ⅱ は
p3: !NumberPrinter
number: 10
실행
방금 전의 테스트 메소드를 실행하면 다음과 같이 결과가 출력된다.
실행 결과
八 足す
Ⅱ は
10
후기
Process I/F 의 구현 방법에 따라서 좀 더 여러가지 할 수 있습니다.
또, JYaml 를 사용하고 있으므로, 필드치의 추가도 간단하거나,
이번에는 인수없이 반환 값없이 쉽게 만들었지만,
제네릭스 등으로 각각 준비하면 더욱 폭이 넓어집니다.
안쪽이 깊네요
Reference
이 문제에 관하여(JYaml으로 간편한 DI), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nijuya_o/items/2ceb896c8e09a85b7b90텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)