SpringXML到java配置:如何转换嵌套的XMLBean定义

SpringXML到java配置:如何转换嵌套的XMLBean定义,java,spring,configuration,Java,Spring,Configuration,----过滤器配置更新---- 如果您使用嵌套bean进行过滤器配置(如我的例子),那么无论您在过滤器上设置了什么属性,如果您只使用setter,它们都将为null(不知道为什么,如果有人想解释,请解释) 要解决此问题,请创建扩展GenericFilterBean的筛选器(@Component),并在其中设置属性。然后@Autowire将其连接到您的配置,并像往常一样在过滤器注册时使用setter。** 如果您有简单的配置属性(例如String),那么您可以将Map与init参数一起使用,并在F

----过滤器配置更新----

如果您使用嵌套bean进行过滤器配置(如我的例子),那么无论您在过滤器上设置了什么属性,如果您只使用setter,它们都将为null(不知道为什么,如果有人想解释,请解释)

要解决此问题,请创建扩展GenericFilterBean的筛选器(@Component),并在其中设置属性。然后@Autowire将其连接到您的配置,并像往常一样在过滤器注册时使用setter。**


如果您有简单的配置属性(例如String),那么您可以将Map与init参数一起使用,并在FilterRegistration bean上设置它。

因为它是一个仅在这个特定外部bean中使用的bean,您只需将其转换为实例创建并设置适当的属性即可

您不能使用
Filter
接口,因为它没有票证验证器的setter

改用
AbstractTicketValidationFilter

    @Bean
    FilterRegistrationBean ticketValidationFilter(){

        Filter ticketValidationFilter = new
                org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter();

        FilterRegistrationBean frb = new FilterRegistrationBean();
        frb.addUrlPatterns("/*");
        frb.setFilter(ticketValidationFilter);

        // ticket Validator somewhere here

        Map<String, String> initParamMap = new HashMap<String, String>();
        initParamMap.put("service", "http://localhost:8889/cas-client");
        frb.setInitParameters(initParamMap);

        return frb;
    }
@Bean
FilterRegistrationBean ticketValidationFilter(){
AbstractTicketValidationFilter ticketValidationFilter=新建
org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter();
FilterRegistrationBean frb=新的FilterRegistrationBean();
frb.addUrlPatterns(“/*”);
frb.setFilter(ticketValidationFilter);
//这是车票有效期
TicketValidator validator=new org.jasig.cas.client.validation.Cas20ServiceTicketValidator(“https://localhost:8443/cas");
设置ticketValidationFilter.setTicketValidator(验证器);
//票证验证程序配置结束
Map initParamMap=新HashMap();
initParamMap.put(“服务”http://localhost:8889/cas-客户);
frb.setInitParameters(initParamMap);
返回frb;
}
java配置的全部优点在于,一些复杂的xml配置可以转换为非常简单的java

    @Bean
    FilterRegistrationBean ticketValidationFilter(){

        Filter ticketValidationFilter = new
                org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter();

        FilterRegistrationBean frb = new FilterRegistrationBean();
        frb.addUrlPatterns("/*");
        frb.setFilter(ticketValidationFilter);

        // ticket Validator somewhere here

        Map<String, String> initParamMap = new HashMap<String, String>();
        initParamMap.put("service", "http://localhost:8889/cas-client");
        frb.setInitParameters(initParamMap);

        return frb;
    }
@Bean
FilterRegistrationBean ticketValidationFilter(){

    AbstractTicketValidationFilter ticketValidationFilter = new
            org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter();

    FilterRegistrationBean frb = new FilterRegistrationBean();
    frb.addUrlPatterns("/*");
    frb.setFilter(ticketValidationFilter);

    //here be ticket validaror

    TicketValidator validator = new org.jasig.cas.client.validation.Cas20ServiceTicketValidator("https://localhost:8443/cas");

    ticketValidationFilter.setTicketValidator(validator);

    //end of ticket validator config

    Map<String, String> initParamMap = new HashMap<String, String>();
    initParamMap.put("service", "http://localhost:8889/cas-client");
    frb.setInitParameters(initParamMap);

    return frb;
}