春 - XMLとJavaConfigを混在させる

Spring – XMLとJavaConfigの混合

Spring XMLとJavaConfigの両方を混在させる方法を示すSpringの例。

1. Spring XMLからJavaConfigを読み込む

Spring MVCの例では、@Configurationを使用してすべてをロードし、web.xmlと統合する必要があります

SpringWebConfig.java

package com.example.form.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;

@EnableWebMvc
@Configuration
@ComponentScan({ "com.example.form.web", "com.example.form.core" })
public class SpringWebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**")
                        .addResourceLocations("/resources/");
    }

    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver =
                        new InternalResourceViewResolver();
        viewResolver.setViewClass(JstlView.class);
        viewResolver.setPrefix("/WEB-INF/views/jsp/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }

}

web.xml



    Spring3 MVC Application

    
        spring-web
        
                       org.springframework.web.servlet.DispatcherServlet
                
        1
        
            contextConfigLocation
            /WEB-INF/spring-web-servlet-config.xml
        
    

    
        spring-web
        /
    

Spring XMLファイルで、Java@Configurationをスキャンするだけです。

spring-web-servlet-config.xml



        
    

完了しました。

2. JavaConfigからSpring XMLをロードする

これはもっと簡単です。@ImportResourceアノテーションを使用するだけです。

2.1 Loads a spring-web-servlet.xml file.

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
import org.springframework.context.annotation.Import;

@Configuration
@Import({ AppConfigOthers.class }) //loads another JavaConfig
@ImportResource("classpath:/config/spring-web-servlet.xml")
public class AppConfigCore {
    //...
}

2.2 Loads a dataSource bean from XML file.

database-config.xml

    
        
        
        
        
    
@Configuration
@Import({ AppConfigOthers.class })
@ImportResource("classpath:/config/database-config.xml")
public class AppConfigCore {

    @Autowired
    DataSource dataSource;

    @Bean
    public JdbcTemplate getJdbcTemplate() {
        return new JdbcTemplate(dataSource);
    }

2.3 Loads multiple Spring XML files

@Configuration
@Import({ AppConfigOthers.class })
@ImportResource({
     "classpath:/config/spring-web-servlet.xml",
     "classpath:/config/database-config.xml"
})
public class AppConfigCore {

    @Autowired
    DataSource dataSource;

    @Bean
    public JdbcTemplate getJdbcTemplate() {
        return new JdbcTemplate(dataSource);
    }