当前位置: 首页 > 知识库问答 >
问题:

Spring boot web-将bean自动转换为XML定义的bean为空

陆昂然
2023-03-14

我正在将现有的基于Spring3.1的web应用程序转换为SpringBoot1.2.5。我最初将旧应用程序升级到Spring4.1.7。

<context:annotation-config/>
<context:component-scan base-package="x.y.z"/>
<bean id="discoveredResourceClasses" factory-bean="resourceManager" factory-method="getResourceClasses">
    <constructor-arg>
        <list>
            <value>x.y.z.resources</value>
        </list>
    </constructor-arg>
</bean>
@Service
public class ResourceManager implements Serializable{
    @Autowired
    protected IExtensionManager extensionManager;

    public List<Class<? extends Resource>> getResourceClasses(String ... packageNames)
    {
        return extensionManager.getExtensions(packageName, includeEverything, Resource.class);
    }
}
@Service
public class ExtensionManager implements IExtensionManager {

    public <T> List<T> getExtensions(String packageName, Map<String, String> filter, Class<T> clazz) {
        //busoinesslogic .
    }

}
@ImportResource("classpath*:xad-config-all.xml")
@SpringBootApplication
public class Application extends SpringBootServletInitializer {

   @Override
   protected SpringApplicationBuilder configure(SpringApplicationBuilder              application) {
    return application.sources(Application.class);
   }

   public static void main(String[] args) {
      SpringApplication.run(Application.class, args);
   }

在创建ResourceManagerbean时,ExtensionManager字段将以NULL的形式出现。因此工厂方法(getResourceClasses)抛出NullPointerException

共有1个答案

龙欣德
2023-03-14

您需要在beggining时提供xml配置文件的路径,当时Spring还没有开始构建应用程序上下文。@ImportResource注释是在注册了许多后处理器之后,在此过程中处理的。

您需要使用SpringApplicationBuilder.Sources方法提供xml配置的路径。

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
    return builder.sources("classpath:/WEB-INF/context/payables-profile.xml", Application.class);
}
 类似资料:
  • 我正在我的web应用程序中实现Spring SAML,该应用程序已经实现了Spring Security,因此我现在有两个身份验证管理器。由于spring总是引用最后声明的authenticationManager,我找到了将一个authentitionManager定义为bean的解决方案。 以下是我在转换为bean之前的AuthenticationManager: 以下是我转换为bean后的代

  • MyCompany-servlet.xml simpleBean.xml(在src/main/resources/mypackage中)

  • 这是我的字符串格式的肥皂xml,我需要如何在Farm对象中形成它。Farm是我的自定义类,任何库都是现成的 使用此代码后,我得到了异常 意外元素(uri:“http://yyyyyy . yyyyy * * * * * * * *”,local:“farm”)。预期的元素有

  • 我正在使用一些现有的代码,它正在做我以前没有见过的事情。我已经处理了使用方法注入将原型bean自动转换为单例,或者使用getBean()从上下文中获取bean。我在这段代码中看到的是一个bean,它是一个原型,使用getBean()检索,它具有自动连接的依赖关系。这些大部分都是单例bean,这是有道理的。但是有另一个原型bean的自动生成,从我所看到的情况来看,它似乎得到了一个新的bean。我的问

  • 问题内容: 关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。 想要改善这个问题吗? 更新问题,使它成为Stack Overflow的主题。 2年前关闭。 改善这个问题 我正在使用大量SQL表在Web应用程序中工作。我需要为每个表创建一个Java bean类。我正在寻找一种可以将SQL表转换为Java Bean类的工具。这将有助于节省时间。 这是一个例子: studentTable(studen

  • 在我的Spring项目中,我通常使用以下三个文件下的xml配置: 我已经将此bean用于在同一个applicationContext-db.xml文件中定义的Sessionfactory bean。 PS:当我删除扩展类时,我的数据源已定义,但我需要这个类来设置Spring Security ACL配置。