2016-08-18 1 views
0

Play Framework를 통해 Java를 사용하여 API를 구현하고 있습니다. 응용 프로그램의 시작 부분에 몇 가지 변수를 인스턴스화하여 응용 프로그램의 전체 수명 동안 유지해야하며 내 HomeController에서 사용해야합니다. 이 변수는 특정 클래스의 함수를 호출하는 데 사용할 수있는 객체입니다.Play Framework를 사용하여 응용 프로그램 시작시 Controller에서 변수 인스턴스화하기

나는 응용 프로그램을 시작할 때 실행되는 코드를 구현하는 가장 좋은 방법은 Dependency Injection을 사용하는 것이라고 읽었지만 어떻게해야하는지 이해하지 못했습니다.

이 작업이 어떻게 수행되는지 분명히 말씀해 주실 수 있습니까?

감사합니다.

답변

2

herehere 자세히 전자 Play의 의존성 삽입 샘플

아이디어를 얻은 후에는 구현하기가 쉽습니다. @Singleton 주석을 (예를 들면 물체의)

  1. 클래스를 정의한다 :

    @Singleton 
    public class MyClass4AppLifecycle { 
        public MyClass4AppLifecycle() { 
         ... 
        } 
        .... 
    } 
    
  2. 컨트롤러 데이터 멤버에 추가 는 애플리케이션의 전체 수명 동안 지속되어야 오브젝트를 정의 할

    public class MyController extends Controller { 
        @Inject 
        private MyClass4AppLifecycle myGlobalObject; 
        ... 
    

    참고 : @Inject 주석이 여러 개체를 언급 한 이후, 회원 주입 주석, 더 적절한 것 같다하는 constructo 주석.

    public class Module extends AbstractModule { 
        @Override 
        protected void configure() { 
         bind(MyClass4AppLifecycle.class).asEagerSingleton(); 
        } 
    } 
    
  3. 를 반복하여 각 유형에 대한 위의 세 가지 당신이 세계적으로

이 필요합니다 :

  • (이것은 가장 간단한 방법입니다) 기본 모듈의 의존성 주입 해 클래스를 등록

  • 2

    의존성 주입 예제는 Google Guice를 사용합니다. 첫 번째는 build.sbt 파일에 해당 종속성을 포함시키는 것입니다.

    당신이

    // https://mvnrepository.com/artifact/com.google.inject/guice 
    libraryDependencies += "com.google.inject" % "guice" % "4.1.0" 
    

    을 추가하여 그런 다음 GlobalSettings (https://www.playframework.com/documentation/2.5.x/GlobalSettings)를 확장하도록 선택할과 Guice 인젝터를

    구현의 예를 주입하기 위해 선택할 수 할 수는 여기에 있습니다 : https://dzone.com/articles/guicing-play-framework

    희망 하시겠습니까?

    관련 문제