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>

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

你可能感兴趣的:(研究生日常技术,java,开发语言)