Spring自动连线对象为空

Spring自动连线对象为空,spring,groovy,autowired,Spring,Groovy,Autowired,我有一个自动连接对象的问题,它不断变为空。我有一个BookManager,这是我在bean中定义的。此BookManager我需要自动连接到扩展我的AbstractBook的所有对象,但我不断获取自动连接对象的空值。我在谷歌上搜索了很多,似乎很多人在autowire方面都犯了一些错误,但我找不到解决方案。这就是它的样子: 我的豆子: beans = { bookManager BookManager } BookManager.groovy class BookManager {

我有一个自动连接对象的问题,它不断变为空。我有一个
BookManager
,这是我在bean中定义的。此
BookManager
我需要自动连接到扩展我的
AbstractBook
的所有对象,但我不断获取自动连接对象的空值。我在谷歌上搜索了很多,似乎很多人在autowire方面都犯了一些错误,但我找不到解决方案。这就是它的样子:

我的豆子:

beans = {
    bookManager BookManager
} 
BookManager.groovy

class BookManager {

    void addText(text){
        println text
    }
}
AbstractBook.groovy

abstract class AbstractBook extends DefaultActor {

    @Autowired
    BookManager bookManager

    protected final void act(){
        loop{
            react{ message ->
                println message
            }
        }
    }

    abstract void method1()
}
Book1.groovy

@Component
class Book1 extends AbstractBook { 

    @Override
    void method1(){
        bookManager.addText("book 1 text")
    }
}
一个可行的解决方案是在我的bean中定义book1,但我不能这样做,因为会生成很多书。所以我希望它能为每本书添加注释
@组件
,但它不起作用


有人知道我如何使bookManager适用于所有书籍吗?

您如何获得Book1的参考资料?你是在另一个类中自动布线吗?如果您使用@Component注释BookManager并从beans文件中删除它,会发生什么?我刚刚意识到我正在使用new Book1(),这不是组件的正确方法。是否可以在我使用new创建的对象上获取自动连线对象?如果您使用的是
new Book1()
,则可以将
bookManager
实例注入构造函数。如果你想让Spring
Autowired
行为为
Book1
实例工作,你需要启动Spring容器,让它为你连接所有东西。谢谢@Durandal,你有没有一个关于如何使用Spring容器的例子,因为我需要在许多层中插入bookManager,而且我不太喜欢它?我是否需要在这个spring容器中手动定义Book1,或者是否可以以某种方式自动定义Book1?这取决于您的应用程序当前的配置方式。基本上,您希望创建一个加载spring配置的测试,现在通常使用注释来完成。通常我使用基于类的Spring配置,因此我的注释如下:
@ContextConfiguration(classes=[RootConfig])
在这里查看Spring文档: