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>

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小吴同学GOGOGO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值