google的轻量级DI框架guice的简单示例代码
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>
感兴趣的可以学习一下,继续深入了解
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
【leetcode】647.回文子串