Skip to content

gormcoder/spring-java-config

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

#spring-java-config

这是一个使用spring中Javaconfig进行项目配置的一个工程,目的是为了熟悉spring零xml配置过程,并在此进行记录,以方便日后使用。

##配置 从spring3.0以后,spring就开始提供javaconfig配置,也就是零XML配置。在这个工程工程中,我们加入了持久层使用的是mybatis框架,下面的介绍中,我只截取部分代码进行介绍。 ###1、spring-mybaties配置 jdbc.properties文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/passbox
jdbc.username=user
jdbc.password=****

DataSourceConfig

DataSourceConfig类,主要是配置dataSource Bean

@Configuration
@PropertySource({"classpath:/properties/jdbc.properties"})
public class DataSourceConfig {

    private static final Logger logger = LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);

    @Value("${jdbc.driver}")
    String driverClass;
    @Value("${jdbc.url}")
    String url;
    @Value("${jdbc.username}")
    String userName;
    @Value("${jdbc.password}")
    String passWord;


    @Bean(name="dataSource")
    public DataSource dataSource(){

        logger.info("DataSource");
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(driverClass);
        dataSource.setUrl(url);
        dataSource.setUsername(userName);
        dataSource.setPassword(passWord);
        return dataSource;
    }

}

@PropertySource引入properties文件,@Value注入配置,@Bean(name="dataSource")指这是一个ID为dataSource的Bean

MybatisConfig

MybatisConfig类,用到了之前的 dataSource这个Bean

@Configuration
@MapperScan("com.yzkj.dao")
public class MybatisConfig {

    private static final Logger logger = LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);

    @Resource(name = "dataSource")
    public DataSource dataSource;


    @Bean(name = "sqlSessionFactory")
    public SqlSessionFactoryBean sqlSessionFactory() throws Exception {
        logger.info("sqlSessionFactory 加载");
        final SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();

        sqlSessionFactory.setDataSource(dataSource);
        sqlSessionFactory.setTypeAliasesPackage("com.yzkj.model");
        sqlSessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mybatis/mapping/*.xml"));
        return sqlSessionFactory;

    }

    @Bean(name = "transactionManager")
    public DataSourceTransactionManager dataSourceTransactionManager() {
        DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();
        dataSourceTransactionManager.setDataSource(dataSource);
        return dataSourceTransactionManager;
    }
}

@MapperScan("com.yzkj.dao") 这里是扫描mapper接口,@Resource(name = "dataSource")注入dataSource

###2、spring-mvc配置

@Configuration
@ComponentScan(basePackages = {"com.yzkj.controller"})
public class AppConfig extends WebMvcConfigurationSupport {

    private static final String MESSAGE_SOURCE = "/WEB-INF/i18n/messages_CN.properties";

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(mappingJacksonHttpMessageConverter());
        addDefaultHttpMessageConverters(converters);
    }


    @Override
    public RequestMappingHandlerMapping requestMappingHandlerMapping() {
        RequestMappingHandlerMapping requestMappingHandlerMapping = super.requestMappingHandlerMapping();
        requestMappingHandlerMapping.setUseSuffixPatternMatch(false);
        requestMappingHandlerMapping.setUseTrailingSlashMatch(false);
        return requestMappingHandlerMapping;
    }

    @Bean(name = "messageSource")
    public MessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename(MESSAGE_SOURCE);
        messageSource.setCacheSeconds(5);
        return messageSource;
    }

    //避免IE执行AJAX时,返回JSON出现下载文件
    @Bean(name = "mappingJacksonHttpMessageConverter")
    public MappingJackson2HttpMessageConverter mappingJacksonHttpMessageConverter() {
        MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();      mappingJackson2HttpMessageConverter.setSupportedMediaTypes(list);
        return mappingJackson2HttpMessageConverter;
    }


    @Override
    public Validator getValidator() {
        LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
        validator.setValidationMessageSource(messageSource());
        return validator;
    }

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
}

@ComponentScan(basePackages = {"com.yzkj.controller"})扫描controller

###3、web.xml配置 在这个工程中,没有使用web.xml文件进行配置,采用javaconfig的方式进行配置。

@Order(1)
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[]{DataSourceConfig.class,MybatisConfig.class};
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class<?>[]{AppConfig.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    @Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
        characterEncodingFilter.setEncoding("UTF-8");
        characterEncodingFilter.setForceEncoding(true);
        return new Filter[] {characterEncodingFilter};
    }
}

以上就是关于使用javaconfig方式进行工程配置,总体来说,正如开篇所说,确实可以达到零xml配置,但是总体上没有简单多少,原来在xml中配置,在javaconfig中也需要配置。

About

spring4.3.5 + mybaties 架构,采用spring提供的javaconfig进行配置

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors