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>

感兴趣的可以学习一下,继续深入了解

经验分享 程序员 微信小程序 职场和发展