大家好,又见面了,我是你们的朋友全栈君。
spring的配置文件applicationContext.xml中的一些配置的作用。
1. 配置组件扫描器,使用注解方式开发
<context:component-scan base-package="com.item.ikell"/>
表示启动spring的组件扫描功能(从spring2.5版本开始)。即Spring容器初始化时,扫描base-package包或者子包下面的Java文件,如果扫描到有@controller、@Service、@Repository、@Component等注解的java类,就会将这些bean注册到工厂中 (纳入Spring容器管理)。还可以使用分号来分隔多个扫描包。
在类上,使用以下注解,实现bean的声明:
@Component:泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
@Controller 用于标注控制层组件(如springMvc的controller,struts中的action)
@Service 用于标注业务层组件
@Repository用于标注数据访问组件,即DAO组件
在类的成员变量上,使用以下注解,实现属性的自动装配
@Autowired :按类的类型进行装配
@Resource:
1.如果同时指定了name和type,那么从Spring上下文中找到唯一匹配的bean进行装配
2. 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常
3.如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常
4.如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如
果匹配则自动装配;
如果在配置文件中配置了<context:component-scan />,就不用在配置<context:annotation-config/>,因为前者已经包含了后者。<context:annotation-config/>的作用是向spring容器注入AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、PersistenceAnnotationBeanPostProcessor 及RequiredAnnotationBeanPostProcessor 四个beanPostProcessor。从而使得@Autowired等注解生效。例如:<context:annotation-config />
<mvc:annotation-driven />
<mvc:annotation-driven />是告知Spring,我们启用注解驱动。然后Spring会自动为我们注册DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter等几个Bean到工厂中,此时我们可以使用@RequestMapping、@Valid注解来处理请求,也可以使用@ResponseBody来处理返回结果。
2. 加载外部的properties配置文件(引入jdbc的配置文件)
<context:property-placeholder location="classpath:jdbc.properties"/>
3. 配置数据库连接池
<!-- 配置数据库连接池 连接池,一般比较普遍使用的连接池有c3p0和JDBC这两种连接池 -->
<!-- <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> c3p0连接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"><!-- JDBC连接池 -->
<!-- 指定基本信息 :jdbc的驱动名、url、数据库名字、密码-->
<property name="driverClass" value="${driverClass}"></property>
<property name="jdbcUrl" value="${jdbcUrl}"></property>
<property name="user" value="${username}"></property>
<property name="password" value="${password}"></property>
<!--初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
<!-- 指定连接池中保留的最大连接数. Default:15-->
<property name="maxPoolSize" value="${jdbc.maxPoolSize}"/>
<!-- 指定连接池中保留的最小连接数-->
<property name="minPoolSize" value="${jdbc.minPoolSize}"/>
<!-- 指定连接池的初始化连接数 取值应在minPoolSize 与 maxPoolSize 之间.Default:3-->
<property name="initialPoolSize" value="${jdbc.initialPoolSize}"/>
<!-- 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数. Default:3-->
<property name="acquireIncrement" value="${jdbc.acquireIncrement}"/>
<!-- JDBC的标准,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements属于单个
connection而不是整个连接池所以设置这个参数需要考虑到多方面的因数.如果maxStatements与
maxStatementsPerConnection均为0,则缓存被关闭。Default:0-->
<property name="maxStatements" value="${jdbc.maxStatements}"/>
<!-- 最大空闲时间,${jdbc.maxIdleTime}(60)秒内未使用则连接被丢弃。若为0则永不丢弃。 Default:0-->
<property name="maxIdleTime" value="${jdbc.maxIdleTime}"/>
<!-- 检查数据库连接池中空闲连接的间隔时间,单位是分,默认值:240,如果要取消则设置为0 -->
<property name="idleConnectionTestPeriod" value="${jdbc.idleConnectionTestPeriod}"/>
<!-- maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。
Default: 0 -->
<property name="maxStatementsPerConnection" value="5"></property>
<!-- 数据库连接池过期时间应小于等于mysql的过期时间和mycat的过期时间 -->
<property name="idleMaxAge" value="20" />
<!-- 每个分区最大的连接数 -->
<property name="maxConnectionsPerPartition" value="100" />
<!-- 每个分区最小的连接数 -->
<property name="minConnectionsPerPartition" value="20" />
<!-- 分区数 ,默认值2,最小1,推荐3-4,视应用而定 -->
<property name="partitionCount" value="1" />
<!-- 每次去拿数据库连接的时候一次性要拿几个,默认值:2 -->
<property name="acquireIncrement" value="2" />
<!-- 缓存prepared statements的大小,默认值:0 -->
<property name="statementsCacheSize" value="0" />
<property name="connectionTimeoutInMs" value="100" />
<!-- 每个分区释放链接助理进程的数量,默认值:3,除非你的一个数据库连接的时间内做了很多工作,
不然过多的助理进程会影响你的性能 -->
<property name="releaseHelperThreads" value="3" />
</bean>
4. 配置mapper接口 MapperScannerConfigurer:配置dao接口的bean,在mybatis-spring.jar包中
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.cn21.calendar.dao" /><!-- 路径 -->
</bean>
5. 配置session工厂 把数据源注入给Session工厂
SqlSessionFactory是创建访问数据库服务所必须的持久层
configLocation Mybatis主配置文件路径,支持classpath语法
mapperLocations 指定mybatis的mapper配置文件,支持classpath语法
dataSource 数据源
typeAliasesPackage 指定model层类名的别名扫描包,这与mapper配置中的paramterType和resultType搭配使用
<!-- 配置session工厂 SqlSessionFactoryBean:配置映射文件的bean,在mybatis-spring.jar中 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 依赖注入数据源,正是上文定义的dataSource -->
<property name="dataSource" ref="dataSource" />
<!-- 文件映射器,指定类文件 -->
<property name="configLocation" value="classpath:/config/sqlmybatis.xml" />
<!-- 自动扫描mapping.xml文件 指定mybatis的mapper配置文件 -->
<property name="mapperLocations" value="classpath:/mapper/**Mapper.xml"></property>
</bean>
6. 事务管理器
<!-- 事务管理器 【事务配置 】 -->
<!-- 要想使用事物控制,必须先配置一个事物管理器 DataSourceTransactionManager:spring事物管理器,基于JDBC,
在org.springframwork.jdbc.版本.jar包中 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
7. 配置AOP
<!-- 配置AOP通知 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<!-- 配置事务属性 -->
<tx:attributes>
<!-- 添加事务管理的方法 -->
<tx:method name="save*" propagation="REQUIRED"/><!-- required 要求 -->
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="select*" read-only="true"/>
</tx:attributes>
</tx:advice>
<!-- 配置AOP,为添加事务管理的操作配置AOP -->
<aop:config>
<!-- 引入的Spring定义的事务通知,需要使用aop:advisor -->
<!-- 下面难 -->
<aop:advisor advice-ref="txAdvice" pointcut="execution(* com.edu.test.service.*.*(..))" />
</aop:config>
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/158347.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...