import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Inject {
}
public class UserService {
@Inject
private UserRepository userRepository;
public void setUserRepository(UserRepository userRepository) {
this.userRepository = userRepository;
}
// ...
}
public class App {
public static void main(String[] args) {
ObjectPool objectPool = new ObjectPool();
objectPool.add(UserRepository.class, new UserRepositoryImpl());
UserService userService = objectPool.instance(UserService.class);
userService.doSomething();
}
}