1

@Inject我只是在不小心用代替注释方法后才注意到这一点@Override。Guice 是故意允许这样做还是应该将其视为错误?

public class GuiceExample {
    public static void main(String[] args) {
        Injector injector = Guice.createInjector(new AbstractModule() {
            @Override
            protected void configure() {
                bind(GuiceManagedResource.class);
            }
        });

        // The following is printed to the console:
        //
        // constructor
        // doSomethingUnexpected
        injector.getInstance(GuiceManagedResource.class);
    }

    static class GuiceManagedResource {
        @Inject
        GuiceManagedResource() {
            System.out.println("constructor");
        }

        @Inject
        void doSomethingUnexpected() {
            System.out.println("doSomethingUnexpected");
        }
    }
}
4

1 回答 1

3

注入是对象初始化的一部分。任何带有注释的构造函数、方法或字段@Inject都将被处理。请参阅javadoc

首先注入构造函数,然后是字段,然后是方法。

所以,是的,如果找到带有注释的方法@Inject,Guice 将调用它(遵循一些规则)。

于 2013-11-12T04:53:47.870 回答