gpt4 book ai didi

java - 如何将现有对象传递给 Spring WebApplicationContext?

转载 作者:行者123 更新时间:2023-12-01 08:59:25 25 4
gpt4 key购买 nike

我想从桌面应用程序启动嵌入式 Tomcat 服务器。在 Tomcat 容器内运行的 web 应用程序是通过 Spring 的 WebApplicationInitializer 配置的(现在我只是扩展 AbstractAnnotationConfigDispatcherServletInitializer)。如何将已有的对象从桌面应用程序传递到 web 应用程序使用的 WebApplicationContext ?

这里是一些示例代码,希望可以更清楚地说明我想要实现的目标:

public class MyWebApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[] { SpringAppConfig.class };
}

@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] { SpringWebConfig.class };
}

@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}

@Configuration
@EnableWebMvc
public class SpringWebConfig extends WebMvcConfigurerAdapter {
}

//somewhere in my desktop application where I want to start the server...
MyObject myObj = new MyObject(SomeParameters params);
//I want to have myObj available for Spring managed objects,
//like @Components and @RestController etc. that get created by Spring

Tomcat tc = new Tomcat();
//some tomcat configuration here
tc.start(); //automatically searches for WebApplicationInitializer in classpath
//I do not know how the Spring managed beans can be made aware of myObj.

最佳答案

Spring容器可以管理所有由Spring容器初始化的对象。如果你想在运行时在 spring 中注入(inject)任何外部对象,你不能这样做。

因此任何由外部编码创建的对象都无法在 spring 中进行管理或注入(inject)。

希望这能消除您的疑虑。

关于java - 如何将现有对象传递给 Spring WebApplicationContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41802621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com