package java_basic;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Injector;
import org.apache.commons.logging.Log;
import org.junit.Test;
/**
* @className: GuiceDemo
* @Description: TODO
* @date: 2022/8/4 17:40
*/
public class GuiceDemo {
public static interface UserService{
void process();
}
public static class UserServiceImpl implements UserService{
@Override
public void process() {
System.out.println("我需要做一些业务逻辑");
}
}
public static interface LogService{
void log(String msg);
}
public static class LogServiceImpl implements LogService{
@Override
public void log(String msg) {
System.out.println("-----LOG:"+msg);
}
}
public static interface Application{
void work();
}
// guice 的配置;
public class MyAppMoudle extends AbstractModule{
@Override
protected void configure() {
bind(LogService.class).to(LogServiceImpl.class);
bind(UserService.class).to(UserServiceImpl.class);
bind(Application.class).to(MyApp.class);
}
}
public static class MyApp implements Application{
private UserService userService;
private LogService logService;
// 在构造器中注入依赖
@Inject
public MyApp(UserService userService, LogService logService){
this.userService = userService;
this.logService = logService;
}
@Override
public void work() {
userService.process();
logService.log("all is ok");
}
}
@Test
public void test(){
Injector injector = Guice.createInjector(new MyAppMoudle());
Application app = injector.getInstance(Application.class);
app.work();
}
}
需要事先导入mavan依赖:
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>4.1.0</version>
</dependency>
感兴趣的可以学习一下,继续深入了解