2014-03-19 2 views
5

Java Play! Framework 2.2.x 앱에서 비 정적 컨트롤러를 사용할 때 상당한 이점이나 단점이 있는지 궁금합니다.Java와 플레이 프레임 워크에서 정적 컨트롤러와 비 정적 컨트롤러의 차이점

일반적으로 Play!의 기본 패턴 인 것처럼 보이는 정적 콘트롤러를 사용합니다.

하지만 Guice를 사용할 때마다 분명히 다양한 서비스를 추가 할 수 있도록 변경해야합니다. , Guice를 사용하여 의존성 주입의 명백하고 잘 문서화 이점에서 별도로

GET /api/something/someofthat controllers.MyController.myStaticAction 

GET /api/something/someother @controllers.MyController.myNonStaticAction 

public class MyController extends Controller { 

    public static Result myStaticAction(){ 
     return ok("This is not a method."); 
    } 

    public Result myNonStaticAction(){ 
     return ok("This is not a static method."); 
    } 

} 

을 :이 작업을 수행하는 방법을 궁금해 사람들을 위해 (당신은 루트 파일의 기능 "경로"의 전면에 '@'을 추가) 순전히 비 정적 컨트롤러가 스레드 안전 코드를 구현하는 데 도움이 될 것입니다. 그러나 나는 그것이 확실하지 않다고 말해야한다. 그래서 내 질문은 : 비 정적 컨트롤러가 권장되는 경우 누군가가 나를 가리킬 수 있습니까? 그리고 정적 제어기가 요구되는 경우도 있습니까?

또한 프레임 워크가 컨트롤러 기능에서 수행하는 "스칼라 래핑"에 영향을 미칩니 까?

고마워요.

답변

2

내가 언급 한 종속성 주입은 비 정적 컨트롤러를 항상 사용해야하는 이유입니다. 코드를 테스트하기가 더 쉬워집니다.

비 정적 컨트롤러로 스레드 안전 코드를 작성하는 것이 약간 더 쉽습니다. 컨트롤러에 직접 변경 가능 (인스턴스간에 공유되지 않음) 상태를 넣고 싶다면 컨트롤러가 응용 프로그램의 일부일뿐입니다. 스레드 안전 코드가 아닌 경우 컨트롤러가 도움이됩니다. 그것은 당신을 구원하지 않을 것입니다.

정적 컨트롤러를 사용하려는 이유가 무엇인지 생각할 수 없습니다.

관련 문제