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

基于Spring Java的配置加载资源(来自类路径)

赫连骏
2023-03-14
<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
  <property name="schema" value="classpath:/xsd/schema.xsd" />
  <property name="contextPath" value="com.company.app.jaxb" />
</bean>
@Configuration
public class AppConfig {

    @Autowired
    private ApplicationContext applicationContext;

    @Bean
    public Marshaller marshaller() {
        Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
        marshaller.setSchema(applicationContext.getResource("classpath:/xsd/schema.xsd"));
        marshaller.setContextPath("com.company.app.jaxb");
        return marshaller;
    }

问:什么是加载资源的正确解决方案(从类路径和/或一般情况下)?Spring文档中提倡使用ApplicationContext:http://docs.Spring.io/Spring/docs/current/spring-framework-reference/html/beans.html#context-introduction

问:为什么autowired字段仍然为空?

共有1个答案

车嘉实
2023-03-14

对于

marshaller.setSchema(applicationContext.getResource("classpath:/xsd/schema.xsd"));

您可以使用

marshaller.setSchema(new ClassPathResource("/xsd/schema.xsd"));

但我无法重现您注入的applicationcontext字段为null

 类似资料:
  • 我最近在使用作为Spring Boot applications(v2.2)开发的微服务,在我的公司,我们使用Keycloak作为授权服务器。我们之所以选择它,是因为我们需要复杂的策略、角色和组,我们还需要用户托管授权(UMA)来在用户之间共享资源。 有没有一种方法可以在控制器级别使用某种注释?类似于下面的伪代码:

  • 在Spring Hibernate XML配置中,我有 我知道SpringJava配置的等价物如下:LocalSessionFactoryBuilder(dataSource())。AddAnnotatedClass(Foo.class)。buildSessionFactory(); 我的问题是,如果我不使用LocalSessionFactoryBuilder类,而是使用HibernateJpaV

  • 我正在尝试将资源csv文件传递到我的Sprint Boot应用程序使用的jar中。尽管方法获取的资源参数=ReactiveWebContext资源[src/main/Resources/file.csv],但我总是得到该文件不存在的响应 > 在我的项目中,文件位于src/main/resources/file中。csv 正在应用中。属性,我定义: 在config类中: 在内部jar:Config类

  • 问题内容: 在Java中,您可以使用相同的API,但使用不同的URL协议来加载各种资源: 这很好地将资源的实际加载与需要资源的应用程序分离开来,并且由于URL只是一个字符串,因此资源加载也很容易配置。 是否有使用当前类加载器加载资源的协议?这类似于Jar协议,除了我不需要知道资源来自哪个jar文件或类文件夹。 我当然可以使用来做到这一点,但这需要我使用不同的API,因此需要对现有代码进行更改。我希

  • CodeIgniter 的"自动加载"特性可以允许系统每次运行时自动初始化类库、辅助函数和模型。 如果你需要在整个应用程序中全局使用某些资源,为方便起见可以考虑自动加载它们。 支持自动加载的有下面这些: libraries/ 目录下的核心类 helpers/ 目录下的辅助函数 config/ 目录下的用户自定义配置文件 system/language/ 目录下的语言文件 models/ 目录下的模

  • 问题内容: 当使用并提供一个相当通用的资源名称(如)时,Java可能会从CLASSPATH前面列出的另一个JAR文件中加载资源,但可能与我的应用程序完全无关。有没有一种方法可以强制ClassLoader 首先 尝试从我的课程所在的同一JAR文件中加载资源,并且只有在未找到的情况下,才可以在CLASSPATH上查找其他JAR? 问题答案: 另外,如果您知道文件所在的确切jar,则可以使用JarURL