Playframework 2.4 Singletons, Object

Преди Playframework 2.4 използвах create object за клас singleton и сега виждам, че Singletons могат да бъдат постигнати с помощта на анотацията @Singleton.

Но каква е разликата?

Само за използване на инжектиране на зависимост с @Inject()?

Опасявам се, че Playframework 2.4 с инжектиране на зависимости влиза по ненужно сложен начин.


person faster2b    schedule 14.06.2015    source източник


Отговори (1)


@Singleton е част от стандарта JSR 330 и наистина е само за инжектиране на зависимости. Той казва на вашата DI рамка да създаде само един екземпляр от дадения клас и да използва този единичен екземпляр във вашето приложение. От документите:

Нови екземпляри се създават всеки път, когато е необходим компонент. Ако даден компонент се използва повече от веднъж, тогава по подразбиране ще бъдат създадени множество екземпляри на компонента. Ако искате само единичен екземпляр на компонент, тогава трябва да го маркирате като единичен.

Можете да мислите за това като за директива към вашата DI рамка за създаване само на един екземпляр. Нищо не ви пречи да създадете множество @Singleton анотирани класове на ръка с помощта на new.

Обектите Singleton в scala за разлика от тях са истински singletons и не могат да бъдат инстанцирани ръчно.

person Roman    schedule 15.06.2015