zoukankan      html  css  js  c++  java
  • springboot自定义配置文件

      前言:如果你一点spring的基础没有,建议你不要学习springboot,至少先有一个spring的项目经验或者自己搭建过spring的项目再学习springboot,这样你会发现在spring中搞不懂的,在springboot中得到一些答案。springboot的原则是“约定大于配置”,所以在使用springboot的时候如果出现问题,没有一点基础,解决问题就很困难。

      目标:将spring的容器中的配置:数据库的配置,定时器的配置转换到springboot中,实现spring与springbooot的配置对接。

      数据库的配置转换:

      spring中数据库连接的配置如下


    <!--数据库实例--> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.mybatis.driver}" /> <property name="url" value="${jdbc.mybatis.url}" /> <property name="username" value="${jdbc.mybatis.username}" /> <property name="password" value="${jdbc.mybatis.password}" /> <!-- 初始化连接大小 --> <property name="initialSize" value="10" /> <!-- 连接池最大数量 --> <property name="maxActive" value="1000" /> <!-- 连接池最大空闲 --> <property name="maxIdle" value="30" /> <!-- 连接池最小空闲 --> <property name="minIdle" value="10" /> <!-- 获取连接最大等待时间 --> <property name="maxWait" value="2000" /> </bean>  

    pringboot中的配置

    	
    	@Bean(name = "dataSource")
    	public BasicDataSource myGetDataSource() {
    		BasicDataSource dataSource = new BasicDataSource();
    		dataSource.setDriverClassName(driverClassName);
    		dataSource.setUrl(url);
    		dataSource.setPassword(passWord);
    		dataSource.setUsername(userName);
    		dataSource.setMaxIdle(2);
    		dataSource.setMaxActive(20);
    		dataSource.setMaxWait(1000);
    		dataSource.setInitialSize(2);
    
    		// 
    		dataSource.setValidationQuery("SELECT 1");
    		dataSource.setRemoveAbandoned(true);
    		dataSource.setTestWhileIdle(true);
    		dataSource.setTimeBetweenEvictionRunsMillis(30000);
    		dataSource.setNumTestsPerEvictionRun(30);
    		dataSource.setMinEvictableIdleTimeMillis(1800000);
    		return dataSource;
    	}
    

    spring 中的配置

     <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        	<property name="dataSource" ref="dataSource" />
    		<property name="mapperLocations" value="classpath:springMVCmybatis/com/my/mapper/*.xml" />
    		<!-- <property name="typeAliasesPackage" value="com.my.model"/> -->
    		
        </bean>
    

     springboot配置sqlSessionFactoryBean,对应上面的sping的SqlSessionFactoryBean类

    @Bean(name = "sqlSessionFactoryBean")
    	public SqlSessionFactoryBean myGetSqlSessionFactory(DataSource dataSource) throws Exception {
    
    		SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
    
    		// mapperLocations
    		ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
    
    		try {
    			sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:mapper/*Mapper.xml"));
    		} catch (IOException e) {
    			log.info("sqlSessionFactoryBean的setMapperLocations有问题");
    			e.printStackTrace();
    		}
    
    		// dataSource
    
    		sqlSessionFactoryBean.setDataSource(dataSource);
    
    		// SqlSessionFactory sessionFactory = sqlSessionFactoryBean.getObject();
    
    		return sqlSessionFactoryBean;
    
    	}
    

     spring中的配置

     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    	     <property name="basePackage" value="springMVCmybatis" /> 
    	     <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> 
    	     
         </bean>
    

     springboot中的配置

    package com.my.myconfigure;
    
    import org.mybatis.spring.mapper.MapperScannerConfigurer;
    import org.springframework.boot.autoconfigure.AutoConfigureAfter;
    import org.springframework.context.annotation.Configuration;
    
    //<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    //<property name="basePackage" value="springMVCmybatis" /> 
    //<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> 
    //
    //</bean>
    
    @Configuration
    // 这个注释是需要在加载MybatisDbConfigure.class之后再加载MapperScanConfig这个类 @AutoConfigureAfter(MybatisDbConfigure.class) public class MapperScanConfig { public MapperScannerConfigurer myGetMapperScannerConfigurer() { MapperScannerConfigurer myMapperScannerConfigurer = new MapperScannerConfigurer(); myMapperScannerConfigurer.setBasePackage("com.my.dao"); myMapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactoryBean"); return myMapperScannerConfigurer; } }

     

    结论:springboot是通过@Configuration来标注自定义配置,配置中使用@Bean来添加类作用与spring配置中的.xml文件作用一样,两者都是容器的作用。

    关于这部分配置已经上传到我的github上,感兴趣或者不懂得,可以登录查看。

      

  • 相关阅读:
    IE 中的 button type默认值问题
    linux中的&&和&,|和||
    scp 上传 下载 文件
    git 撤销,放弃本地修改
    git branch 新建,推送与删除
    git tags 管理
    CentOS7下Firewall常用命令
    git 忽略文件,不提交文件 清空缓存
    mysql 常用命令
    优秀的测试人员简历是什么样子的?
  • 原文地址:https://www.cnblogs.com/boywwj/p/8010799.html
Copyright © 2011-2022 走看看