春季@Component课程必须公开吗?

2022-09-04 21:41:05

我想将组件的接口公开为接口,并且实现类将受到包保护(也许在其他包中):

package baz.iface

interface Foo {
    void bar();
}  


package baz.whatever

@Component
class SpringyFoo implements baz.iface.Foo {
    public void bar() { frobnicate(); }
}

假设在,Spring能够自动连接其他地方吗?baz.whatevercomponent-scanbaz.iface.Foo

class FooClient {
    @Autowired
    private baz.iface.Foo;
}

答案 1

不,组件不必是公共的。唯一的要求是它们具有无参数构造函数。


答案 2

是的,Spring将搜索类型。
实现,并可用于代替 类型的对象。FooSpringyFooFooFoo


推荐