@Documented @Retention(value=RUNTIME) @Target(value={TYPE,ANNOTATION_TYPE}) public @interface Service
This annotation can be applied to an interface to declare a service. Any class implementing the annotated interface will be registered by the framework as an implementation of this service.
Considering the following service:
@Service
public interface MoneyTransferService {
void transfer(Account source, Account target);
}
Its implementation is declared as:
public class ElectronicMoneyTransferService implements MoneyTransferService {
public void transfer(Account source, Account target) {
// implementation
}
}
The implementation can then be injected as follows:
public class SomeClass {
@Inject
MoneyTransferService moneyTransferService;
}
When a service interface has multiple implementations, it is necessary to differentiate them
by using a different javax.inject.Qualifier annotation on each. This qualifier can then
be used at the injection point to specify which implementation is required. Considering the
additional implementation of the MoneyTransferService below:
@Named("solidGold")
public class SolidGoldMoneyTransferService implements MoneyTransferService {
public void transfer(Account source, Account target) {
// implementation
}
}
This implementation can be injected as follows:
public class SomeClass {
@Inject
@Named("solidGold")
TransferService transferService;
}
Copyright © 2013-2018–2019 SeedStack. All rights reserved.