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)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • win10下使用vs2015编译支持xp系统的libcurl

    win10下使用vs2015编译支持xp系统的libcurl在我的一篇博客中写了编译libcurl的,那种方式编译的curl动态库在win7到win10上可以使用,但是在xp系统里就不能使用了,接下来讲解一种方法可以在xp系统里使用cur。1编译openssl由于在perl官网里提供的perl版本没有dmake,因此使用我提供的perl5.24带dmake的包,下载地址。安装好perl后,可以尝试使用ppminstalldmake命令来进行安装dmake模块,在我电脑里无法安装,因此直接使用dmake离线包。将dmake.exe所在目录添加到系统pat

    2022年7月12日
  • python学习笔记(三)— PyCharm 下载安装教程(Windows)

    python学习笔记(三)— PyCharm 下载安装教程(Windows)目录1、PyCharm简介2、PyCharm下载3、PyCharm环境变量的配置4、下载安装Python解释器5、开始使用PyCharm1、PyCharm简介PyCharm是一种PythonIDE(IntegratedDevelopmentEnvironment,集成开发环境),是一款非常强大的Python编辑器,支持代码编辑、编译、调试等功能,PyCharm能够满足大型项目的开发需求。2、PyCharm下载PyCharm的下载地址:http://www.jetbrains.co

    2022年8月27日
  • EJB学习笔记一(EJB概述)

    EJB学习笔记一(EJB概述)1.前言从今天开始,简单的学习一下有关EJB方面的知识.从自己看EJB有关方面的书籍来看,感觉跟市面上的Spring很像,后来才发现,整个Spring框架实际上是参考了EJB的设计理念,由于学习过Spring,所以现在学习EJB的相关知识,并不是很吃力.接下来会在几篇博客中,简单的书写一下,自己的EJB的认识. 2.什么是EJBEJB全名为EnterpriseJa

    2022年9月30日
  • 配置sshd_config中的PermitRootLogin设置root登录或者禁止root登录

    配置sshd_config中的PermitRootLogin设置root登录或者禁止root登录在etc的sshd_config文件中,默认有PermitRootLoginno的配置,这个的意思是禁止root用户登录,如果想要允许root登录,需要suroot用户到sshd_config下进

    2022年6月30日
  • 关系数据库的范式理论_数据库规范化理论依据

    关系数据库的范式理论_数据库规范化理论依据文章目录求关系模式最高达到第几范式的步骤通俗理解1NF,2NF,3NF.如何求关系模式的候选码如何求闭包函数依赖求关系模式最高达到第几范式的步骤根据给定的U和F,首先求它的候选码根据候选码判断关系F中的函数关系是否满足第二范式,若不满足则为关系模式的规范化最高为第一范式然后判断是否存在非主属性传递依赖,如果存在则不满足第二范式,如果不存在则关系模式的规范化最高为第三范式.通俗理解1N…

    2022年10月16日
  • python 列表转字符串[通俗易懂]

    python 列表转字符串[通俗易懂]python中list转字符串命令:”.join(list)其中,引号中是字符之间的分割符,如“,”,“;”,“\t”等等如:list=[1,2,3,4,5]”.join(list)结果即为:12345′,’.join(list)结果即为:1,2,3,4,5

    2022年6月13日

发表回复

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

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