public interface UserService {
void addUser(String username);
}
public class UserServiceImpl implements UserService {
public void addUser(String username) {
System.out.println("Adding user: " + username);
}
}
public class UserModule extends AbstractModule {
protected void configure() {
bind(UserService.class).to(UserServiceImpl.class);
}
}
public class MyApp {
@Inject
private UserService userService;
public void addUser(String username) {
userService.addUser(username);
}
}
public class LoggingAspect {
@BeforeMethod
public void logMethodCall(MethodInvocation methodInvocation) {
System.out.println("Method called: " + methodInvocation.getMethod().getName());
}
}
public class UserModule extends AbstractModule {
protected void configure() {
bind(UserService.class).to(UserServiceImpl.class);
bindInterceptor(Matchers.any(), Matchers.annotatedWith(LoggingAspect.class),
new LoggingAspect());
}
}