相关疑难解决方法(0)

Lifecycle界面如何在Spring中运行?什么是"顶级单身豆"?

在Spring javadoc中说,"请注意,Lifecycle接口仅支持顶级单例bean." 这里的URL

我的LifecycleBeanTest.xml描述bean如下:

<beans ...>
    <bean id="lifecycle" class="tests.LifecycleBean"/>
</beans>
Run Code Online (Sandbox Code Playgroud)

所以它看起来很"热"和"单调".

这是什么意思?如何让Spring知道我的bean实现Lifecycle并用它做点什么?

假设我的main方法在Spring中看起来如下

public static void main(String[] args) {
    new ClassPathXmlApplicationContext("/tests/LifecycleBeanTest.xml").close();
}
Run Code Online (Sandbox Code Playgroud)

所以,它实例化上下文然后立即关闭它.

我可以在我的配置中创建一些bean,这会延迟close()执行直到应用程序执行所有操作吗?那么主方法线程等待应用程序终止?

例如,以下bean不按我想象的方式工作.也start()没有stop()被称为.

package tests;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.Lifecycle;

public class LifecycleBean implements Lifecycle {

    private static final Logger log = LoggerFactory.getLogger(LifecycleBean.class);

    private final Thread thread = new Thread("Lifecycle") {
        {
            setDaemon(false);
            setUncaughtExceptionHandler(new UncaughtExceptionHandler() {

                @Override
                public void uncaughtException(Thread t, Throwable e) {
                    log.error("Abnormal thread …
Run Code Online (Sandbox Code Playgroud)

java spring multithreading

16
推荐指数
1
解决办法
1万
查看次数

标签 统计

java ×1

multithreading ×1

spring ×1