public class UserService {
@Inject
private UserRepository userRepository;
// ...
}
public class UserFactory {
@Produces
public UserRepository createUserRepository() {
return new UserRepository();
}
}
public class UserService {
@Inject
@MyDatabase
private UserRepository userRepository;
// ...
}
@Qualifier
@Retention(RUNTIME)
@Target({METHOD, FIELD, PARAMETER, TYPE})
public @interface MyDatabase {}
@Singleton
public class UserCache {
// ...
}
public class UserService {
@Resource
private DataSource dataSource;
// ...
}