「这是我参与2022首次更文挑战的第3天,活动详情查看:2022首次更文挑战」
这篇主要讲项目的配置文件
一、Spring配置文件
spring配置文件,一般固定名称有applicationContext.xml,application.xml,application.properties等等。 这个配置文件主要进行扫描包的配置、数据源的配置、映射文件的配置、事务管理配置等。该项目中的配置文件主要配置数据库连接池,mybytis相关的信息。
1、数据库连接池
平常我们连接数据库,开启连接,获取数据,对数据进行操作,操作完毕再关闭连接。如果我们对表,对数据进行多番操作,多个人进行操作,频繁的开启,关闭连接,造成数据库压力大,资源浪费等等。于是诞生了数据库连接池的概念。数据库连接池,它是一个池子,除了配置基本的数据库连接信息,比如用户名,密码等,你可以设置平时闲置的时候,允许有多少个连接,还可以设置最小,最大连接多少等等。最重要的是数据库连接池可以复用,可以多次连接,而不用频繁的开启关闭,造成资源浪费。下面是连接池的一些基本信息。
<!-- proxool连接池 -->
<bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource">
<!-- 驱动的名字,mysql -->
<property name="driver" value="${db.driver}"/>
<!--proxool 的 url连接串,这个必须确定用户名和密码 -->
<property name="driverUrl" value="${db.url}"/>
<!-- 用户名(proxool没有使用,但是不能没有) -->
<property name="user" value="${db.username}"/>
<!-- 密码(proxool没有使用,但是不能没有) -->
<property name="password" value="${db.password}"/>
<!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁 现在设置为4秒) -->
<property name="houseKeepingSleepTime" value="3000"/><!-- 自动检查连接是否断掉开关 -->
<property name="testBeforeUse" value="true"/>
<!-- 如果发现了空闲的数据库连接.house keeper 将会用这个语句来测试.这个语句最好非常快的被执行.如果没有定义,测试过程将会被忽略 -->
<property name="houseKeepingTestSql" value="SELECT count(1) from dual"/>
<!-- 如果housekeeper 检测到某个线程的活动时间大于这个数值.它将会杀掉这个线程.所以确认一下你的服务器的带宽.然后定一个合适的值.默认是5分钟. 现在设置 10 秒-->
<property name="maximumActiveTime" value="10000"/>
<!-- 最少保持的空闲连接数 (现在设置10个) -->
<property name="prototypeCount" value="10"/>
<!-- 最大连接数 (现在设置100个) -->
<property name="maximumConnectionCount" value="100"/>
<!-- 最小连接数 (现在设置10个) -->
<property name="minimumConnectionCount" value="10"/>
<!-- 如果为true,那么每个被执行的SQL语句将会在执行期被log记录(DEBUG LEVEL).你也可以注册一个ConnectionListener (参看ProxoolFacade)得到这些信息. -->
<property name="trace" value="false"/>
<property name="verbose" value="true"/>
</bean>
2、mybytis配置
另外在applicationContext.xml配置文件还配置了mybatis的信息,初始化信息,扫描包的配置。
<!-- mybatis的配置 -->
<!-- 初始化mybatis文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"
p:dataSource-ref="dataSource" p:configLocation="classpath:mybatis-config.xml"
p:mapperLocations="classpath:sql/*.xml" p:typeAliasesPackage="com.app.bean">
</bean>
<!-- mybatis的mapper转换器 也就是说的接口,里面原理是采用的jdk的动态代理实现的-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.app.mapper"/>
</bean>
二、Mybatis具体配置
我们在Mybatis-config.xml这个文件具体配置Mybatis。 1、cacheEnabled:全局映射器启用缓存 2、lazyLoadingEnabled:懒加载,查询时,关闭关联对象即时加载以提高性能。 3、aggressiveLazyLoading:设置关联对象加载的形态,此处为按需加载字段(加载字段由SQL指定),不会加载关联表的所有字段,以提高性能。 4、multipleResultSetsEnabled:对于未知的SQL查询,允许返回不同的结果集以达到通用的效果。 5、useColumnLabel:允许使用列标签代替列名。 6、useGeneratedKeys:允许使用自定义的主键值(比如由程序生成的UUID 32位编码作为键值),数据表的PK生成策略将被覆盖。 7、autoMappingBehavior:给予被嵌套的resultMap以字段-属性的映射支持。 8、defaultExecutorType:对于批量更新操作缓存SQL以提高性能。 9、defaultStatementTimeout:数据库超过25000秒仍未响应则超时。
<setting name="cacheEnabled" value="true" />
<setting name="lazyLoadingEnabled" value="true" />
<setting name="aggressiveLazyLoading" value="false" />
<setting name="multipleResultSetsEnabled" value="true" />
<setting name="useColumnLabel" value="true" />
<setting name="useGeneratedKeys" value="true" />
<setting name="autoMappingBehavior" value="FULL" />
<setting name="defaultExecutorType" value="BATCH" />
<setting name="defaultStatementTimeout" value="25" />
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
<setting name="logImpl" value="STDOUT_LOGGING" />
三、log日志的配置
log日志的框架有挺多,我们这个项目采用了log4j,现在主要讲讲log4j.properties文件配置。 log4j.properties 为 log4j 日志配置文件,主要将程序中打印的日志信息输出到控制台、保存到目录文件,可以通过配置设置日志文件的输出级别、格式、输出路径等。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!-- 日志最大的历史 30天 -->
<property name="maxHistory" value="30"/>
<!-- 控制台日志 -->
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger - %msg%n
</pattern>
</layout>
</appender>
<!-- 配置info级别日志,实现分离文件日志配置 -->
<appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger - %msg%n
</pattern>
<charset>UTF-8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/my-log-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>${maxHistory}</maxHistory>
</rollingPolicy>
</appender>
<root level="info">
<appender-ref ref="fileInfoLog"/>
<appender-ref ref="consoleLog"/>
</root>
</configuration>
1、property name="maxHistory"是指日志保留的最大天数,一般保留30天即可,可以查看一个月内记录的信息。 2、appender name="consoleLog"指打印在控制台日志信息的具体配置 3、日志级别ERROR > WARN > INFO > DEBUG。 输出原则为:程序会打印出高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少,即:
设置级别为 ERROR 只会打印出 ERROR 日志;
设置级别为 WARN 会打印出 ERROR 和 WRAN 日志;
设置级别为 INFO 会打印出 ERROR、WARN 和 INFO 日志;
设置为 DEBUG 会打印出所有日志。