精华内容
下载资源
问答
  • J2EE进阶(四)Spring配置文件详解

    万次阅读 热门讨论 2016-07-16 12:04:40
    J2EE进阶(四)Spring配置文件详解 Spring配置文件是用于指导Spring工厂进行Bean生产、依赖关系注入(装配)及Bean实例分发的"图纸"。Java EE程序员必须学会并灵活应用这份"图纸"准确地表达自己的"生产意图"。Spring...

    J2EE进阶(四)Spring配置文件详解

    前言

         Spring配置文件是用于指导Spring工厂进行Bean生产、依赖关系注入(装配)及Bean实例分发的"图纸"。Java EE程序员必须学会并灵活应用这份"图纸"准确地表达自己的"生产意图"。Spring配置文件是一个或多个标准的XML文档,applicationContext.xml是Spring的默认配置文件,当容器启动时找不到指定的配置文档时,将会尝试加载这个默认的配置文件。

         下面列举的是一份比较完整的配置文件模板,文档中各XML标签节点的基本用途也给出了详细的解释,这些XML标签节点在后续的知识点中均会用到,熟练掌握了这些XML节点及属性的用途后,为我们动手编写配置文件打下坚实的基础。

         下面,就上面的配置列举一个示例:

     

    <?xml version="1.0" encoding="UTF-8"?>  
    <beans xmlns="http://www.springframework.org/schema/beans"  
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
        xsi:schemaLocation="http://www.springframework.org/schema/beans    
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">  
        <!-- 定义使用C3P0连接池的数据源 -->  
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">  
            <!-- 指定连接数据库的JDBC驱动 -->  
            <property name="driverClass">  
                <value>com.mysql.jdbc.Driver</value>  
            </property>
            <!-- 连接数据库所用的URL -->  
            <property name="jdbcUrl">  
                <value>jdbc:mysql://localhost:3306/eportal?useUnicode=  
                    true&characterEncoding=gbk</value>  
            </property>  
            <!-- 连接数据库的用户名 -->  
            <property name="user">  
                <value>root</value>  
            </property>  
            <!-- 连接数据库的密码 -->  
            <property name="password">  
                <value>root</value>  
            </property>  
            <!-- 设置数据库连接池的最大连接数 -->  
            <property name="maxPoolSize">  
                <value>20</value>  
            </property>  
            <!-- 设置数据库连接池的最小连接数 -->  
            <property name="minPoolSize">  
                <value>2</value>  
            </property>  
            <!-- 设置数据库连接池的初始化连接数 -->  
            <property name="initialPoolSize">  
                <value>2</value>  
            </property>  
            <!-- 设置数据库连接池的连接的最大空闲时间,单位为秒 -->  
            <property name="maxIdleTime">  
                <value>20</value>  
            </property>  
        </bean>  
        <!-- 定义Hibernate的SessionFactory -->  
        <bean id="sessionFactory" class="org.springframework.orm.  
    hibernate3.LocalSessionFactoryBean">  
            <!-- 依赖注入上面定义的数据源dataSource -->  
            <property name="dataSource" ref="dataSource" />  
            <!-- 注册Hibernate的ORM映射文件 -->  
            <property name="mappingResources">  
                <list>  
                    <value>com/eportal/ORM/News.hbm.xml</value>  
                    <value>com/eportal/ORM/Category.hbm.xml</value>  
                    <value>com/eportal/ORM/Memberlevel.hbm.xml</value>  
                    <value>com/eportal/ORM/Cart.hbm.xml</value>  
                    <value>com/eportal/ORM/Traffic.hbm.xml</value>  
                    <value>com/eportal/ORM/Newsrule.hbm.xml</value>  
                    <value>com/eportal/ORM/Merchandise.hbm.xml</value>  
                    <value>com/eportal/ORM/Admin.hbm.xml</value>  
                    <value>com/eportal/ORM/Orders.hbm.xml</value>  
                    <value>com/eportal/ORM/Cartselectedmer.hbm.xml</value>  
                    <value>com/eportal/ORM/Newscolumns.hbm.xml</value>  
                    <value>com/eportal/ORM/Member.hbm.xml</value>  
                </list>  
            </property>  
            <!-- 设置Hibernate的相关属性 -->  
            <property name="hibernateProperties">  
                <props>  
                    <!-- 设置Hibernate的数据库方言 -->  
                    <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>  
                    <!-- 设置Hibernate是否在控制台输出SQL语句,开发调试阶段通常设为true -->  
                    <prop key="show_sql">true</prop>  
                    <!-- 设置Hibernate一个提交批次中的最大SQL语句数 -->  
                    <prop key="hibernate.jdbc.batch_size">50</prop>  
                    <prop key="show_sql">50</prop>  
                </props>  
            </property>  
        </bean>  
        <!--定义Hibernate的事务管理器HibernateTransactionManager -->  
        <bean id="transactionManager"  
            class="org.springframework.orm.hibernate3.HibernateTransactionManager">  
            <!-- 依赖注入上面定义的sessionFactory -->  
            <property name="sessionFactory" ref="sessionFactory" />  
        </bean>  
        <!--定义Spring的事务拦截器TransactionInterceptor -->  
        <bean id="transactionInterceptor"  
            class="org.springframework.transaction.interceptor.TransactionInterceptor">  
            <!-- 依赖注入上面定义的事务管理器transactionManager -->  
            <property name="transactionManager" ref="transactionManager" />  
            <!-- 定义需要进行事务拦截的方法及所采用的事务控制类型 -->  
            <property name="transactionAttributes">  
                <props>  
                    <!-- 以browse、list、load、get及is开头的所有方法采用只读型事务控制类型 -->  
                    <prop key="browse*">PROPAGATION_REQUIRED,readOnly</prop>  
                    <prop key="list*">PROPAGATION_REQUIRED,readOnly</prop>  
                    <prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>  
                    <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>  
                    <prop key="is*">PROPAGATION_REQUIRED,readOnly</prop>  
                    <!-- 所有方法均进行事务控制,如果当前没有事务,则新建一个事务 -->  
                    <prop key="*">PROPAGATION_REQUIRED</prop>  
                </props>  
            </property>  
        </bean>  
        <!-- 定义BeanNameAutoProxyCreatorf进行Spring的事务处理 -->  
        <bean class="org.springframework.aop.framework.autoproxy.    
    BeanNameAutoProxyCreator">  
            <!-- 针对指定的bean自动生成业务代理 -->  
            <property name="beanNames">  
                <list>  
                    <value>adminService</value>  
                    <value>columnsService</value>  
                    <value>newsService</value>  
                    <value>crawlService</value>  
                    <value>memberLevelService</value>  
                    <value>memberService</value>  
                    <value>categoryService</value>  
                    <value>merService</value>  
                    <value>cartService</value>  
                    <value>ordersService</value>  
                    <value>trafficService</value>  
                </list>  
            </property>  
            <!-- 这个属性为true时,表示被代理的是目标类本身而不是目标类的接口 -->  
            <property name="proxyTargetClass">  
                <value>true</value>  
            </property>  
            <!-- 依赖注入上面定义的事务拦截器transactionInterceptor -->  
            <property name="interceptorNames">  
                <list>  
                    <value>transactionInterceptor</value>  
                </list>  
            </property>  
        </bean>  
        <!-- 装配通用数据库访问类BaseDAOImpl -->  
        <bean id="dao" class="com.eportal.DAO.BaseDAOImpl">  
            <property name="sessionFactory" ref="sessionFactory" />  
        </bean>  
        <!-- 部署系统用户管理业务逻辑组件AdminServiceImpl -->  
        <bean id="adminService" class="com.eportal.service.AdminServiceImpl">  
            <property name="dao" ref="dao" />  
        </bean>  
        <!-- 部署新闻栏目管理业务逻辑组件ColumnsServiceImpl -->  
        <bean id="columnsService" class="com.eportal.service.ColumnsServiceImpl">  
            <property name="dao" ref="dao" />  
        </bean>  
        <!-- 部署订单管理业务逻辑组件OrderServiceImpl -->  
        <bean id="ordersService" class="com.eportal.service.OrderServiceImpl">  
            <property name="dao" ref="dao" />  
        </bean>  
        <!-- 部署流量统计业务逻辑组件TrafficServiceImpl -->  
        <bean id="trafficService" class="com.eportal.service.TrafficServiceImpl">  
            <property name="dao" ref="dao" />  
        </bean>  
        <!-- 部署Struts 2负责系统用户管理的控制器AdminAction -->  
        <bean id="adminAction" class="com.eportal.struts.action.  
    AdminAction" scope="prototype">  
            <property name="service" ref="adminService" />  
        </bean>  
        <!-- 部署Struts 2负责新闻栏目管理的控制器ColumnsAction -->  
        <bean id="columnsAction" class="com.eportal.struts.action.
    ColumnsAction" scope="prototype">  
            <property name="service" ref="columnsService" />  
        </bean>  
        <!-- 部署Struts 2负责新闻管理的控制器NewsAction -->  
        <bean id="newsAction" class="com.eportal.struts.action.  
    NewsAction" scope="prototype">  
            <property name="service" ref="newsService" />  
            <property name="columnsService" ref="columnsService" />  
        </bean>  
        <!-- 部署Struts 2负责新闻采集规则管理的控制器CrawlAction -->  
        <bean id="crawlAction" class="com.eportal.struts.action.  
    CrawlAction" scope="prototype">  
            <property name="service" ref="crawlService" />  
            <property name="columnsService" ref="columnsService" />  
        </bean>  
    </beans>

     

    美文美图

    展开全文
  • spring配置文件详解

    万次阅读 多人点赞 2018-09-07 08:55:39
    Spring配置文件是用于指导Spring工厂进行Bean生产、依赖关系注入(装配)及Bean实例分发的"图纸"。Java EE程序员必须学会并灵活应用这份"图纸"准确地表达自己的"生产意图"。Spring...

    转自:http://book.51cto.com/art/201004/193743.htm

    Spring配置文件是用于指导Spring工厂进行Bean生产、依赖关系注入(装配)及Bean实例分发的"图纸"。Java EE程序员必须学会并灵活应用这份"图纸"准确地表达自己的"生产意图"。Spring配置文件是一个或多个标准的XML文档,applicationContext.xml是Spring的默认配置文件,当容器启动时找不到指定的配置文档时,将会尝试加载这个默认的配置文件。

    在学会动手"绘制图纸"之前,先要学会"阅读图纸",熟能生巧讲的就是这个道理,"熟读唐诗三百首,不会作诗也会吟"。

    下面列举的是一份比较完整的配置文件模板,文档中各XML标签节点的基本用途也给出了详细的解释,这些XML标签节点在后续的知识点中均会用到,熟练掌握了这些XML节点及属性的用途后,为我们动手编写配置文件打下坚实的基础。

     

    <?xml version="1.0" encoding="UTF-8"?>  
    <beans xmlns="http://www.springframework.org/schema/beans"  
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
        xsi:schemaLocation="http://www.springframework.org/schema/beans    
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">  
        <!-- 定义使用C3P0连接池的数据源 -->  
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">  
            <!-- 指定连接数据库的JDBC驱动 -->  
            <property name="driverClass">  
                <value>com.mysql.jdbc.Driver</value>  
            </property>  
            <!-- 连接数据库所用的URL -->  
            <property name="jdbcUrl">  
                <value>jdbc:mysql://localhost:3306/eportal?useUnicode=  
                    true&characterEncoding=gbk</value>  
            </property>  
            <!-- 连接数据库的用户名 -->  
            <property name="user">  
                <value>root</value>  
            </property>  
            <!-- 连接数据库的密码 -->  
            <property name="password">  
                <value>root</value>  
            </property>  
            <!-- 设置数据库连接池的最大连接数 -->  
            <property name="maxPoolSize">  
                <value>20</value>  
            </property>  
            <!-- 设置数据库连接池的最小连接数 -->  
            <property name="minPoolSize">  
                <value>2</value>  
            </property>  
            <!-- 设置数据库连接池的初始化连接数 -->  
            <property name="initialPoolSize">  
                <value>2</value>  
            </property>  
            <!-- 设置数据库连接池的连接的最大空闲时间,单位为秒 -->  
            <property name="maxIdleTime">  
                <value>20</value>  
            </property>  
        </bean>  
        <!-- 定义Hibernate的SessionFactory -->  
        <bean id="sessionFactory"  
            class="org.springframework.orm.  
    hibernate3.LocalSessionFactoryBean">  
            <!-- 依赖注入上面定义的数据源dataSource -->  
            <property name="dataSource" ref="dataSource" />  
            <!-- 注册Hibernate的ORM映射文件 -->  
            <property name="mappingResources">  
                <list>  
                    <value>com/eportal/ORM/News.hbm.xml</value>  
                    <value>com/eportal/ORM/Category.hbm.xml</value>  
                    <value>com/eportal/ORM/Memberlevel.hbm.xml</value>  
                    <value>com/eportal/ORM/Cart.hbm.xml</value>  
                    <value>com/eportal/ORM/Traffic.hbm.xml</value>  
                    <value>com/eportal/ORM/Newsrule.hbm.xml</value>  
                    <value>com/eportal/ORM/Merchandise.hbm.xml</value>  
                    <value>com/eportal/ORM/Admin.hbm.xml</value>  
                    <value>com/eportal/ORM/Orders.hbm.xml</value>  
                    <value>com/eportal/ORM/Cartselectedmer.hbm.xml</value>  
                    <value>com/eportal/ORM/Newscolumns.hbm.xml</value>  
                    <value>com/eportal/ORM/Member.hbm.xml</value>  
                </list>  
            </property>  
            <!-- 设置Hibernate的相关属性 -->  
            <property name="hibernateProperties">  
                <props>  
                    <!-- 设置Hibernate的数据库方言 -->  
                    <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>  
                    <!-- 设置Hibernate是否在控制台输出SQL语句,开发调试阶段通常设为true -->  
                    <prop key="show_sql">true</prop>  
                    <!-- 设置Hibernate一个提交批次中的最大SQL语句数 -->  
                    <prop key="hibernate.jdbc.batch_size">50</prop>  
                    <prop key="show_sql">50</prop>  
                </props>  
            </property>  
        </bean>  
        <!--定义Hibernate的事务管理器HibernateTransactionManager -->  
        <bean id="transactionManager"  
            class="org.springframework.orm.hibernate3.HibernateTransactionManager">  
            <!-- 依赖注入上面定义的sessionFactory -->  
            <property name="sessionFactory" ref="sessionFactory" />  
        </bean>  
        <!--定义Spring的事务拦截器TransactionInterceptor -->  
        <bean id="transactionInterceptor"  
            class="org.springframework.transaction.interceptor.TransactionInterceptor">  
            <!-- 依赖注入上面定义的事务管理器transactionManager -->  
            <property name="transactionManager" ref="transactionManager" />  
            <!-- 定义需要进行事务拦截的方法及所采用的事务控制类型 -->  
            <property name="transactionAttributes">  
                <props>  
                    <!-- 以browse、list、load、get及is开头的所有方法采用只读型事务控制类型 -->  
                    <prop key="browse*">PROPAGATION_REQUIRED,readOnly</prop>  
                    <prop key="list*">PROPAGATION_REQUIRED,readOnly</prop>  
                    <prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>  
                    <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>  
                    <prop key="is*">PROPAGATION_REQUIRED,readOnly</prop>  
                    <!-- 所有方法均进行事务控制,如果当前没有事务,则新建一个事务 -->  
                    <prop key="*">PROPAGATION_REQUIRED</prop>  
                </props>  
            </property>  
        </bean>  
        <!-- 定义BeanNameAutoProxyCreatorf进行Spring的事务处理 -->  
        <bean  
            class="org.springframework.aop.framework.autoproxy.    
    BeanNameAutoProxyCreator">  
            <!-- 针对指定的bean自动生成业务代理 -->  
            <property name="beanNames">  
                <list>  
                    <value>adminService</value>  
                    <value>columnsService</value>  
                    <value>newsService</value>  
                    <value>crawlService</value>  
                    <value>memberLevelService</value>  
                    <value>memberService</value>  
                    <value>categoryService</value>  
                    <value>merService</value>  
                    <value>cartService</value>  
                    <value>ordersService</value>  
                    <value>trafficService</value>  
                </list>  
            </property>  
            <!-- 这个属性为true时,表示被代理的是目标类本身而不是目标类的接口 -->  
            <property name="proxyTargetClass">  
                <value>true</value>  
            </property>  
            <!-- 依赖注入上面定义的事务拦截器transactionInterceptor -->  
            <property name="interceptorNames">  
                <list>  
                    <value>transactionInterceptor</value>  
                </list>  
            </property>  
        </bean>  
        <!-- 装配通用数据库访问类BaseDAOImpl -->  
        <bean id="dao" class="com.eportal.DAO.BaseDAOImpl">  
            <property name="sessionFactory" ref="sessionFactory" />  
        </bean>  
        <!-- 部署系统用户管理业务逻辑组件AdminServiceImpl -->  
        <bean id="adminService" class="com.eportal.service.AdminServiceImpl">  
            <property name="dao" ref="dao" />  
        </bean>  
        <!-- 部署新闻栏目管理业务逻辑组件ColumnsServiceImpl -->  
        <bean id="columnsService" class="com.eportal.service.ColumnsServiceImpl">  
            <property name="dao" ref="dao" />  
        </bean>  
          
        <!-- 部署订单管理业务逻辑组件OrderServiceImpl -->  
        <bean id="ordersService" class="com.eportal.service.OrderServiceImpl">  
            <property name="dao" ref="dao" />  
        </bean>  
        <!-- 部署流量统计业务逻辑组件TrafficServiceImpl -->  
        <bean id="trafficService" class="com.eportal.service.TrafficServiceImpl">  
            <property name="dao" ref="dao" />  
        </bean>  
        <!-- 部署Struts 2负责系统用户管理的控制器AdminAction -->  
        <bean id="adminAction" class="com.eportal.struts.action.  
    AdminAction"  
            scope="prototype">  
            <property name="service" ref="adminService" />  
        </bean>  
        <!-- 部署Struts 2负责新闻栏目管理的控制器ColumnsAction -->  
        <bean id="columnsAction" class="com.eportal.struts.action.  
    ColumnsAction"  
            scope="prototype">  
            <property name="service" ref="columnsService" />  
        </bean>  
        <!-- 部署Struts 2负责新闻管理的控制器NewsAction -->  
        <bean id="newsAction" class="com.eportal.struts.action.  
    NewsAction"  
            scope="prototype">  
            <property name="service" ref="newsService" />  
            <property name="columnsService" ref="columnsService" />  
        </bean>  
        <!-- 部署Struts 2负责新闻采集规则管理的控制器CrawlAction -->  
        <bean id="crawlAction" class="com.eportal.struts.action.  
    CrawlAction"  
            scope="prototype">  
            <property name="service" ref="crawlService" />  
            <property name="columnsService" ref="columnsService" />  
        </bean>  
          
    </beans>   
    

     

     

    展开全文
  • MyBatis-Spring配置简单了解

    万次阅读 多人点赞 2015-05-11 11:10:10
    MyBatis-Spring配置简单了解SqlSessionFactoryBean配置在基本的 MyBatis 中,session 工厂可以使用 SqlSessionFactoryBuilder 来创建。而在 MyBatis-Spring 中,则使用 SqlSessionFactoryBean 来替代。示例&amp;lt...

    MyBatis-Spring配置简单了解

    SqlSessionFactoryBean配置

    在基本的 MyBatis 中,session 工厂可以使用 SqlSessionFactoryBuilder 来创建。而在 MyBatis-Spring 中,则使用 SqlSessionFactoryBean 来替代。

    示例

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
      <property name="dataSource" ref="dataSource"/>
      <property name="mapperLocations">
        <array>
          <value>classpath:mapper/*.xml</value>
        </array>
      </property>
      <property name="typeAliasesPackage" value="com.isea533.mybatis.model"/>
      <property name="plugins">
        <array>
          <bean class="com.github.pagehelper.PageHelper">
            <property name="properties">
              <value>
                dialect=hsqldb
                reasonable=true
              </value>
            </property>
          </bean>
          <bean class="com.github.abel533.mapperhelper.MapperInterceptor">
            <property name="properties">
              <value>
                mappers=com.github.abel533.mapper.Mapper
                IDENTITY=MYSQL
                notEmpty=true
              </value>
            </property>
          </bean>
        </array>
      </property>
    </bean>

    dataSource属性

    该属性必须配置,多数据源时会有多个dataSource,同时也需要配置多个sqlSessionFactory来对应。

    mapperLocations属性

    配置该属性后,sqlSessionFactory会自动扫描该路径下的所有文件并解析。

    该路径支持多个,可以用,;\t\n进行分割。

    每一个路径都可以用直接的包路径,或者Ant风格的表达式。

    configLocation属性

    上面例子中并没有使用该属性,当SqlSessionFactoryBean提供的配置不能满足使用时,你可以使用mybatis-config.xml配置文件配置其他属性,然后通过configLocation属性指定该配置的路径,SqlSessionFactoryBean会使用该配置文件创建Configuration

    typeAliasesPackage属性

    该属性可以给包中的类注册别名,注册后可以直接使用类名,而不用使用全限定的类名(就是不用包含包名)。

    该属性可以配置多个,可以用,;\t\n进行分割。但是不支持Ant风格的路径

    plugins属性

    该属性可以配置MyBatis的拦截器,拦截器的配置顺序会影响拦截器的执行顺序。

    从上往下的拦截器,实际的执行顺序是这样,第一个拦截器会最后执行,最后一个会首先执行。

    然后出拦截器的顺序和配置的顺序一致,第一个最先返回,最后一个最后返回。

    就以上面的配置为例,一个简单的执行顺序图如下:

    执行顺序

    这些拦截器执行的顺序都是环绕型,不要简单理解为简单的顺序执行。

    从配置顺序来看,第一个配置的在最里面,后面的依次环绕上一个拦截器。

    MapperScannerConfigurer 配置

    为了代替手工使用 SqlSessionDaoSupport 或 SqlSessionTemplate 编写数据访问对象 (DAO)的代码,MyBatis-Spring 提供了一个动态代理的实现:MapperFactoryBean。这个类 可以让你直接注入数据映射器接口到你的 service 层 bean 中。当使用映射器时,你仅仅如调 用你的 DAO 一样调用它们就可以了,但是你不需要编写任何 DAO 实现的代码,因为 MyBatis-Spring 将会为你创建代理。

    示例

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.isea533.mybatis.mapper"/>
        <property name="annotationClass" value="XXX"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>

    一般用过的最多也就是这3个属性,实际情况下最常用的只有basePackage

    basePackage属性

    basePackage可以写多个,可以用,;\t\n进行分割。

    每一个路径都可以用直接的包路径,或者Ant风格的表达式。

    annotationClass属性

    该属性实际上就是起到一个过滤的作用,如果设置了该属性,那么MyBatis的接口只有包含该注解,才会被扫描进去。

    sqlSessionFactoryBeanName属性

    这个属性一般都用不到,只有当你配置多数据源的时候,这是会有多个sqlSessionFactory,你就需要通过该属性来指定哪一个sqlSessionFactory(值为SqlSessionFactoryBean <bean>配置中的id属性)。

    Ant通配符

    • ? 匹配任何单字符
    • * 匹配0或者任意数量的字符
    • ** 匹配0或者更多的目录

    举例

    • /project/*.a 匹配项目根路径下所有在project路径下的.a文件
    • /project/p?ttern 匹配项目根路径下 /project/pattern 和 /app/pXttern,但是不包括/app/pttern
    • /**/example 匹配项目根路径下 /project/example, /project/foow/example, 和 /example
    • /project/**/dir/file.* 匹配项目根路径下/project/dir/file.jsp, /project/foow/dir/file.html
    • /**/*.jsp 匹配项目根路径下任何的.jsp 文件

    最长匹配原则(has more characters)

    URL请求/project/dir/file.jsp,现在存在两个路径匹配模式/**/*.jsp和/project/dir/*.jsp,那么会根据模式/project/dir/*.jsp来匹配

    展开全文
  • spring 配置扫描多个包

    万次阅读 2017-09-27 17:59:59
    spring 配置扫描多个包

    spring 配置扫描多个包,有时候我们希望不同功能类型的包放在不同的包下,这就需要

    	<!-- 自动扫描该包,使 SpringMVC 为包下用了@controller注解的类是控制器 -->
    	<context:component-scan base-package="com.weixiao.ssmcleardb.controller" />
    	<context:component-scan base-package="com.weixiao.listener" />

    有时候我们可能遇到奇怪的问题,

    新建了一个包,在这个包下面新建了一个类,也添加了注解,但启动的时候就是扫描不到,而其它的类又正常!

    这就是你新建的包没有配置为自动扫描的原因。

    比如我在 com.weixiao.listener 包下新建的一个类:

    package com.weixiao.listener;
    
    import javax.servlet.ServletContext;
    
    import org.apache.log4j.LogManager;
    import org.apache.log4j.Logger;
    import org.springframework.beans.BeansException;
    import org.springframework.beans.factory.InitializingBean;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;
    import org.springframework.context.ApplicationListener;
    import org.springframework.context.event.ContextRefreshedEvent;
    import org.springframework.stereotype.Component;
    import org.springframework.web.context.ServletContextAware;
    
    @Component("StartupListener")
    public class StartupListener implements ApplicationContextAware, ServletContextAware, InitializingBean,
    		ApplicationListener<ContextRefreshedEvent> {
    
    	protected Logger logger = LogManager.getLogger(getClass());
    
    	@Override
    	public void setApplicationContext(ApplicationContext ctx) throws BeansException {
    		logger.info("\r\n\r\n\r\n\r\n1 => StartupListener.setApplicationContext");
    	}
    
    	@Override
    	public void setServletContext(ServletContext context) {
    		logger.info("\r\n\r\n\r\n\r\n2 => StartupListener.setServletContext");
    	}
    
    	@Override
    	public void afterPropertiesSet() throws Exception {
    		logger.info("\r\n\r\n\r\n\r\n3 => StartupListener.afterPropertiesSet");
    	}
    
    	@Override
    	public void onApplicationEvent(ContextRefreshedEvent event) {
    		logger.info("\r\n\r\n\r\n\r\n4.1 => MyApplicationListener.onApplicationEvent");
    		logger.info("\r\n\r\n\r\n\r\n4.1 => " + event.getApplicationContext().getParent());
    		logger.info("\r\n\r\n\r\n\r\n4.1 => " + event.getApplicationContext().getDisplayName());
    		
    		if (event.getApplicationContext().getParent() == null) {
    			logger.info("\r\n\r\n\r\n\r\n4.2 => MyApplicationListener.onApplicationEvent");
    		}else{
    			logger.info("\r\n\r\n\r\n\r\n4.4 => " + event.getApplicationContext().getParent().getDisplayName());
    		}
    		
    		if (event.getApplicationContext().getDisplayName().equals("Root WebApplicationContext")){
    			logger.info("\r\n\r\n\r\n\r\n4.3 => MyApplicationListener.onApplicationEvent");
    		}
    	}
    
    }
    关于  component-scan,我们来看 spring framework 开发手册中的一段话:

    Spring 2.5引入了更多典型化注解(stereotype annotations): @Component、@Service和 @Controller。@Component是所有受Spring管理组件的通用形式;而@Repository、@Service和 @Controller则是@Component的细化,用来表示更具体的用例(例如,分别对应了持久化层、服务层和表现层)。也就是说,你能用@Component来注解你的组件类,但如果用@Repository、@Service 或@Controller来注解它们,你的类也许能更好地被工具处理,或与切面进行关联。例如,这些典型化注解可以成为理想的切入点目标。当然,在Spring Framework以后的版本中, @Repository、@Service和 @Controller也许还能携带更多语义。如此一来,如果你正在考虑服务层中是该用@Component还是@Service,那@Service显然是更好的选择。同样的,就像前面说的那样, @Repository已经能在持久化层中进行异常转换时被作为标记使用了。”




    展开全文
  • 虽然spring早就推出...这里展示3种spring配置文件,来对比xml配置和java注解配置的区别,分别是spring\mvc\shiro的配置 先说总结: 对比2种配置方式会发现xml方法更繁琐(xml那恶心的头部约束),拿shiro来说...
  • Spring-Spring配置概述

    千次阅读 2017-07-16 05:01:17
    Spring容器高层视图 成功启动Spring容器的三个必要条件 Bean配置信息 基于XML的配置 Schema的配置格式 ...应用程序为Spring提供了完整的Bean配置信息 Bean的类都已经放到应用程序的类路径下 Spring
  • 目录 Spring中的方法 ...Spring Boot里面没有Spring配置文件,自己编写的配置文件,也不能自动识别; 想让Spring配置文件生效,加载@ImportResource标注配置类 项目结构如下: ...
  • 手动加载spring配置文件

    千次阅读 2018-08-22 15:32:10
    手动加载Spring配置文件有两个类,分别是ClassPathXmlApplication与FileSystemXmlApplicationContext; 两个类的区别: 1.ClassPathXmlApplication的使用方法 @Test public void testBean(){ //单配置文件方式...
  • Spring学习笔记(四)--spring配置文件schema约束

    万次阅读 热门讨论 2018-01-16 15:37:46
    相关概念 在使用spring的配置文件时,新添加一个配置文件就需要添加相应的约束,一直没有研究过为什么要有这些约束,这些约束是干什么的。spring在启动的时候需要验证xml文档... 在项目中其中的一个spring配置文件约...
  • 1、通过《Spring Boot 全局配置文件》与《@Value 取赋值详解与 @ConfigurationProperties 对比》已经知道使用“@Value”注解与“@ConfigurationProperties”可以从全局配置文件“application.prope...
  • Spring 配置数据库用户名密码加密

    万次阅读 2018-10-23 10:22:09
    对于一般的spring框架,经常要用到数据源配置,如果是用xml配置的话,一般都是如下形式   数据库用户名密码密文配置实现 现在的需求是不能在配置文件里明文配置数据库用户名和密码 新增密文属性文件 class...
  • spring 配置sqlite的方式

    千次阅读 2016-01-27 09:52:38
    sqlite作为一种嵌入式数据库越来越受欢迎,特别是在小型的项目中,下面介绍两种spring配置sqlite数据库的方式 第一种:配置在tomcat目录下  1、在tomcat根目录下创建dbs文件夹,将sqlite文件放到该目录下(暂定为...
  • Spring配置文件中的import

    千次阅读 2017-04-24 10:04:23
    在实际的项目开发中,我们往往会分为很多不同的包,如果遇见为不同的包都设置Spring配置文件的情况,都写在一个总的配置文件中,难免会造成配置文件内容臃肿,不易阅读的情况。 为了方便管理应用配置文件,推荐使用...
  • 工具:maven、spring framework(4.2.4.RELEASE) 示例代码:... spring framwork的核心功能是依赖注入、作为对象工厂 试验条件: maven spring framwork 4.2.4.RELEASE ...试验spring配置文...
  • 上一篇博客 Spring源码解析--Spring配置文件解析BeanDefinitionParserDelegate(四)中我们介绍了对Bean基本元素的解析处理器,接下来我们介绍一下Spring提供的NamespaceHandler的处理机制,简单来说就是命名空间...
  • Spring配置文件之引入命名空间

    千次阅读 2017-07-25 19:23:51
    如何为Spring配置文件引入命名空间是我在初接触Spring时有点头疼的问题。现在稍作整理(一)Spring配置文件的最简格式 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...
  • Spring MVC和Spring配置AOP

    千次阅读 2016-01-09 12:48:56
    所以要想给Spring MVC的Controller添加AOP的话,得在Spring MVC的配置文件中配置,要想给Service和Repository添加AOP的话得在Spring配置文件中配置。 2.以一个例子说明,有人配置了Service层的事务AOP之后,事务...
  • 运行时无法识别properties属性文件中的属性引用,但properties属性文件和属性明明已经存在,例如: 要在Spring中使用外部properties属性文件,需要在Spring配置文件中添加bean后处理器PropertyPlaceholderConfigurer...
  • Spring配置文件中 注解标签 详解

    千次阅读 2017-05-07 11:03:21
    在基于主机方式配置Spring时,Spring配置文件applicationContext.xml,你可能会见这样一条配置,它的作用是隐式的向Spring容器注册 AutowiredAnnotationBeanPostProcesso
  • 1.Spring使用properties资源文件作为配置源,配置取classPath下面的. 工程中难免出现一些需要每次部署都需要...使用java的properties资源文件,将所有的配置参数都写到properties文件里面,使用${key}来在spring配置文件
  • Spring配置及第一个Spring HelloWorld

    万次阅读 多人点赞 2015-04-01 14:35:02
    本文将主讲了Spring在Eclipse下的配置,并用Spring运行了第一个HelloWorld.
  • Spring(19):Spring 配置文件 拆分/组合/结构详解
  • 内容: spring配置问价出错; 1、 spring配置文件配置数据库连接: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context=...
  • 我们的工程一般在会跑在正式环境、测试...1、在spring配置文件中配置两种环境信息 2、在web.xml中配置使用哪种环境信息,tomcat启动的时候自动去加载对应的环境信息 spring.profiles.active dev
  • spring配置中id和name属性的区别

    万次阅读 多人点赞 2016-07-16 01:01:10
    可能大家在网上都应该搜索过在 Spring 配置中 id 和 name 属性的区别,可能你会搜索到有一大堆的区别,不过在我这里可能不一样了。我这里 Spring 的版本为 3.2.4,区别不是很大,这里总结一下。1.id 和 name 的命名...
  • XML配置STS,编写Spring配置文件时,标签无自动提示符解决 问题 在编写Spring框架的配置文件时,标签无提示符。本文就来解决掉这种问题。 原因 由于Spring的schema文件位于网络上,如果机器不能连接到网络,那么...
  • 浅谈web.xml文件中加载Spring配置文件和SpringMVC配置文件
  • 使用Spring配置文件实现事务管理

    千次阅读 2016-10-21 18:40:54
    前面我们讲解了使用Spring注解方式来管理事务,现在我们就来学习使用Spring配置文件实现事务管理。本文是建立在使用Spring注解方式管理事务与传播行为详解案例基础之上的。 首先我们在cn.itcast.service.impl包下再...
  • Spring 配置文件报错 Cannot resolve class or package 明明有明确的类但是还会报错 解决:重新 mvn clean install spring 会一次加载所有在xml配置的bean
  • idea找不到spring配置文件

    千次阅读 2018-06-08 15:18:59
    idea找不到spring配置文件 近日学习mybaits和Spring的整合,看完视频,兴高采烈的动手做了起来。 可是在第一步就摔了跤,在application中引入数据库配置文件db.propertise的时候idea一直告诉我找不到文件。可是我...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,265,870
精华内容 506,348
关键字:

spring配置

spring 订阅