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

xml bean配置到java代码配置

施茂
2023-03-14

我怎么能改变这个xml配置:

<bean id="templateEngine" class="org.thymeleaf.spring3.SpringTemplateEngine">
      ...
      <property name="additionalDialects">
        <set>
          <bean class="org.thymeleaf.extras.springsecurity3.dialect.SpringSecurityDialect"/>
        </set>
      </property>
      ...
    </bean>

到目前为止的java代码配置我有这个我只有这部分的问题:

<property name="additionalDialects">
            <set>
              <bean class="org.thymeleaf.extras.springsecurity3.dialect.SpringSecurityDialect"/>
            </set>
          </property>

这就是我到目前为止在java代码中所拥有的:

   @Bean
    public SpringSecurityDialect springSecurityDialect() {
        return new SpringSecurityDialect();
    }

    @Bean 
    public SpringTemplateEngine templateEngine() {
        SpringTemplateEngine engine  =  new SpringTemplateEngine();
        engine.setTemplateResolver( templateResolver() );
        engine.setMessageSource( messageSource() );

        //DIALECTS
                Set<SpringSecurityDialect> ssdSet = new HashSet<SpringSecurityDialect>();       
                ssdSet.add( springSecurityDialect() );
                engine.setAdditionalDialects( ssdSet ); <-- this line give me this error
        return engine;
    }

这一行给我这个错误:方法setAdditionalDialects(Set


共有3个答案

高恺
2023-03-14

您可以使用类似的代码实例化整个引擎。

FileSystemXmlApplicationContext appCtx = new FileSystemXmlApplicationContext("myconfigfile.xml");
if (appCtx.containsBean("templateEngine") {
   SpringTemplateEngine engine = (SpringTemplateEngine) appCtx.getBean("templateEngine");
}

将应用您在xml配置文件中对引擎设置的附加方言和任何其他属性。

您可能想看看如何使用ClassPathXmlApplicationContext,而不是我示例中的文件系统。

闽涵蓄
2023-03-14
匿名用户

根据您的配置,属性< code>additionalDialects应该分配给包含一个bean的集合。因此,在javaconfig中,只需创建一个HashSet实例,向其添加< code > SpringSecurityDialect bean,并将结果集分配给< code>additionalDialects属性。< code > SpringSecurityDialect bean应由用< code>@Bean注释的方法创建,以让Spring应用程序上下文知道此Bean,从而执行Bean初始化器和后处理器。< br >下面的代码说明了这一点:

@Bean
public SpringTemplateEngine templateEngine() {
        SpringTemplateEngine engine  =  new SpringTemplateEngine();
        engine.setTemplateResolver( templateResolver() );
        engine.setMessageSource( messageSource() );
        Set<SpringSecurityDialect> ssdSet = new HashSet<SpringSecurityDialect>();
        ssdSet.add( springSecurityDialect() );
        engine.setAdditionalDialects( ssdSet );

        return engine;
    }

@Bean
public SpringSecurityDialect springSecurityDialect() {
    return new SpringSecurityDialect();
}

田兴怀
2023-03-14

今天我用头撞了一会儿。答案在于查看Spring靴源:

https://github.com/spring-projects/spring-boot/blob/v1.2.5.RELEASE/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/thymeleaf/ThymeleafAutoConfiguration.java

@Configuration
@ConditionalOnClass({ SpringSecurityDialect.class })
protected static class ThymeleafSecurityDialectConfiguration {

    @Bean
    @ConditionalOnMissingBean
    public SpringSecurityDialect securityDialect() {
        return new SpringSecurityDialect();
    }

}

所以Spring Boot(org.springframework.boot: spring-boot-starter-thymeleaf)会尝试注入org.thymeleaf.extras.springsecurity3.dialect.SpringSecurityDialect.也许它不起作用,因为我有springsecurity4罐子。

无论如何,有一个简单的解决方法:只需执行Spring启动尝试执行的操作即可。在@Configuration类中,只需添加 bean

@Bean
public SpringSecurityDialect securityDialect() {
    return new SpringSecurityDialect();
}
 类似资料:
  • 本文向大家介绍基于Java代码配置MyBatis Generator,包括了基于Java代码配置MyBatis Generator的使用技巧和注意事项,需要的朋友参考一下 使用MyBatis Generator生成器时,有时候没办法使用xml形式的配置文件,比如将Maven项目设置成pom打包方式(<packaging>pom</packaging>)!由于Maven的工作机制对于打包方式为pom

  • 1. 代码库的配置 为了使用RDC发布部署, 我们需要添加一些配置. 1 . settings.xml 该文件是指定RDC机器编译时maven使用的settings.xml文件. 该文件放在代码库的根目录 如果工程目录不指定的话, RDC会使用默认的settings文件, 这样就会出现无法拉取到我们私库里面的jar包。因此我们每个代码库都需要自己配置一份。 【由于settings.xml里面涉及到

  • 我试图将以下Spring任务xml配置转换为纯粹基于代码/注释的版本: 根据Spring规范28.4.1(http://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html),他们说,从XML开始: 编写代码配置就像启用@EnableScheduling和/或@EnableSync一样简

  • configure脚本配置Apache的源代码树并且将其安装到指定的平台上。丰富的选项允许你根据自己的特定状况和特定需求对Apache进行定制。 这个脚本位于源代码树的根目录下,并且只能用于类Unix操作系统。要了解其他平台的信息,参见:针对特定平台的说明文档。 语法 你必须在源代码树的根目录下调用configure脚本,语法如下: ./configure [OPTION]... [VAR=VAL

  • 问题内容: 我正在尝试将以下Spring任务xml配置转换为纯粹基于代码/注释的版本: 根据Spring规范28.4.1(http://docs.spring.io/spring/docs/current/spring-framework- reference/html/scheduling.html ),他们说要像这样从XML中获取: 代码配置就像启用@EnableScheduling和/或@E

  • 我在下面写了Java Config Code,但用于注销和. antMatcher("/约会/"). access("hasRole('USER')")和antMatcher("/计划/"). access("hasRole('ADMIN')") URL是否总是转到/login/failure?错误=true 什么是合适的java cofig代码。请帮助...... }