applicationContext.xml配置简介「建议收藏」

applicationContext.xml配置简介「建议收藏」spring的配置文件applicationContext.xml中的一些配置的作用。1.配置组件扫描器,使用注解方式开发<context:component-scanbase-package=”com.item.ikell”/>表示启动spring的组件扫描功能(从spring2.5版本开始)。即Spring容器初始化时,扫描base-package包或者子包下面的…

大家好,又见面了,我是你们的朋友全栈君。

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>

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158347.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • iReport 设计介绍「建议收藏」

    iReport 设计介绍「建议收藏」目录iReport用户手册………………………………………………………………………………………………1iReport用户手册-介绍………………………………………………..

    2025年10月21日
    4
  • fastJson中jsonobject转换成jsonArray,jsonArray转换成jsonobject

    fastJson中jsonobject转换成jsonArray,jsonArray转换成jsonobject关于fastJson中jsonobject和jsonArray转换

    2022年6月7日
    278
  • 台式电脑上网线插在哪里_计算机插了网线还是没有网络怎么办

    台式电脑上网线插在哪里_计算机插了网线还是没有网络怎么办问:电脑主机网线插在哪里?答:这个需要根据你家的上网情况来决定,主要是看有没有用到路由器上网,下面进行详细说明。1、如果你家里没有用路由器,那么电脑主机上的网线,需要插在猫的网口/LAN口。温馨提示:没有用路由器的情况下,电脑要上网的话,你需要打开电脑中的“宽带连接”程序,然后填写你家的宽带账号、宽带密码,就能连接上网了。如果你不知道如何用“宽带连接”程序拨号上网,可以点击阅读下面的文章,查看详…

    2022年4月19日
    170
  • 将网址转换为二维码的方法

    将网址转换为二维码的方法通过草料二维码网址是https://cli.im/?fromTopNav=1输入网址后转换为二维码比如用途:可以将自己的作品先放在github上,然后再放入超级简历中个人作品上,能让HR可

    2022年7月3日
    28
  • 电脑开机读不到固态硬盘怎么办_电脑读不到固态硬盘怎么办

    电脑开机读不到固态硬盘怎么办_电脑读不到固态硬盘怎么办电脑重启后发现电脑检测不出固态硬盘,这种情况大家不要慌张,下面就由学习啦小编跟大家分享电脑重启后读不到固态硬盘该怎么办,欢迎大家来阅读学习。电脑重启后读不到固态硬盘怎么办方法一1、首先进入BIOS后,选择“IDEHDDAutoDetection”项目,看是否可以检测到硬盘的存在,并核对型号是否一致,如果正常排除硬件问题,如果还不能找到硬盘,那么就是您的硬盘损坏或连接不正确。2、如果在bios…

    2025年11月19日
    9
  • android开机动画多长时间_Android 开机动画启动过程详解[通俗易懂]

    android开机动画多长时间_Android 开机动画启动过程详解[通俗易懂]Android开机会出现3个画面:1.Linux系统启动,出现Linux小企鹅画面(reboot)(Android1.5及以上版本已经取消加载图片);2.Android平台启动初始化,出现”ANDRIOD”文字字样画面;3.Android平台图形系统启动,出现含闪动的ANDROID字样的动画图片(start)。1、开机图片(Linux小企鹅)(Android1.5及以上…

    2022年5月15日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号