SPRING概述

概述

Spring最主要的思想就是IoC(Inversionof Control,控制反转),或者成为DI(Dependency Injection,依赖注入)

Spring有七个部分组成,结构图解如下:


基本配置

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans  
  3.  xmlns="http://www.springframework.org/schema/beans"  
  4.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.  xmlns:context="http://www.springframework.org/schema/context"  
  6.  xsi:schemaLocation="http://www.springframework.org/schema/beans   
  7.                     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
  8.                     http://www.springframework.org/schema/context  
  9.                     http://www.springframework.org/schema/context/spring-context-2.5.xsd  
  10.                     ">  
  11.   
  12.   
  13. <context:component-scan base-package="com.persia">  
  14. <!-- 开启组件扫描 -->  
  15. </context:component-scan>  
  16.   
  17. <context:annotation-config>  
  18. <!--开启注解处理器-->  
  19. </context:annotation-config>  
  20.   
  21. <!-- 使用注解,省去了propertity的xml配置,减少xml文件大小 -->  
  22. <bean id="personServiceAnno" class="com.persia.PersonServiceAnnotation"></bean>  
  23. <bean id="personDaoBeanAnno" class="com.persia.PersonDaoBean"></bean>  
  24. <bean id="personDaoBeanAnno2" class="com.persia.PersonDaoBean"></bean>  
  25.   
  26. <!-- 自动注解 -->  
  27. <bean id="personServiceAutoInject" class="com.persia.PersonServiceAutoInject" autowire="byName"></bean>  
  28.   
  29.   
  30. <bean id="personService" class="com.persia.PersonServiceBean">  
  31. <!-- 由spring容器去创建和维护,我们只要获取就可以了 -->  
  32. </bean>  
  33.   
  34. <bean id="personService2" class="com.persia.PersonServiceBeanFactory" factory-method="createInstance" lazy-init="true"   
  35.       init-method="init"  destroy-method="destory">  
  36. <!-- 静态工厂获取bean -->  
  37. </bean>  
  38.   
  39. <bean id="fac" class="com.persia.PersonServiceBeanInsFactory"></bean>  
  40. <bean id="personService3" factory-bean="fac" factory-method="createInstance" scope="prototype">  
  41. <!-- 实例工厂获取bean,先实例化工厂再实例化bean-->  
  42. </bean>  
  43.   
  44.   
  45. <!-- ref方式注入属性 -->  
  46. <bean id="personDao" class="com.persia.PersonDaoBean"></bean>  
  47. <bean id="personService4" class="com.persia.PersonServiceBean">  
  48.   <property name="personDao" ref="personDao"></property>  
  49. </bean>  
  50.   
  51. <!-- 内部bean方式注入 -->  
  52. <bean id="personService5" class="com.persia.PersonServiceBean">  
  53.   <property name="personDao">  
  54.      <bean class="com.persia.PersonDaoBean"></bean>  
  55.   </property>  
  56.   <property name="name" value="persia"></property>  
  57.   <property name="age" value="21"></property>  
  58.     
  59.   <property name="sets">  
  60.     <!-- 集合的注入 -->  
  61.      <set>  
  62.        <value>第一个</value>  
  63.        <value>第二个</value>  
  64.        <value>第三个</value>  
  65.      </set>  
  66.   </property>  
  67.     
  68.   <property name="lists">  
  69.     <!-- 集合的注入 -->  
  70.     <list>  
  71.         <value>第一个l</value>  
  72.        <value>第二个l</value>  
  73.        <value>第三个l</value>  
  74.     </list>  
  75.       
  76.   </property>  
  77.     
  78.   <property name="properties">  
  79.     <props>  
  80.       <prop key="key1">value1</prop>  
  81.       <prop key="key2">value2</prop>  
  82.       <prop key="key3">value3</prop>  
  83.     </props>  
  84.   </property>  
  85.     
  86.   <property name="map">  
  87.    <map>  
  88.       <entry key="key1" value="value-1"></entry>  
  89.       <entry key="key2" value="value-2"></entry>  
  90.       <entry key="key3" value="value-3"></entry>  
  91.    </map>  
  92.   </property>  
  93. </bean>  
  94.   
  95. <bean id="personService6" class="com.persia.PersonServiceBean">  
  96.    <constructor-arg index="0" value="构造注入的name" ></constructor-arg>  
  97.    <!-- 基本类型可以不写type -->  
  98.    <constructor-arg index="1" type="com.persia.IDaoBean" ref="personDao">  
  99.    </constructor-arg>   
  100. </bean>  
  101.   
  102. </beans>  


开启AOP配置

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans  
  3.  xmlns="http://www.springframework.org/schema/beans"  
  4.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.  xmlns:context="http://www.springframework.org/schema/context"  
  6.  xmlns:aop="http://www.springframework.org/schema/aop"  
  7.  xsi:schemaLocation="http://www.springframework.org/schema/beans   
  8.                     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
  9.                      http://www.springframework.org/schema/aop  
  10.                     http://www.springframework.org/schema/aop/spring-aop-2.5.xsd  
  11.                     http://www.springframework.org/schema/context  
  12.                     http://www.springframework.org/schema/context/spring-context-2.5.xsd  
  13.                    ">  
  14.   
  15. <aop:aspectj-autoproxy></aop:aspectj-autoproxy>  
  16.   
  17. <bean id="personService" class="com.persia.service.impl.PersonServiceImpl"></bean>  
  18. <bean id="aspectBean" class="com.persia.service.MyInterceptor"></bean>  
  19.   
  20. <aop:config>  
  21.  <aop:aspect id="myaop" ref="aspectBean">  
  22.  <aop:pointcut id="mycut" expression="execution(* com.persia.service.impl.PersonServiceImpl.*(..))"/>  
  23.  <aop:pointcut id="argcut" expression="execution(* com.persia.service.impl.PersonServiceImpl.*(..)) and args(name)"/>    
  24.  <aop:before pointcut-ref="mycut" method="doAccessCheck"  />  
  25.  <aop:after-returning pointcut-ref="mycut" method="doAfterReturning"/>  
  26.    <aop:after-throwing pointcut-ref="mycut" method="doThrowing"/>  
  27.    <aop:after pointcut-ref="argcut" method="doAfter" arg-names="name"/>  
  28.  <aop:around pointcut-ref="mycut" method="arround"/>  
  29.  </aop:aspect>  
  30.     
  31. </aop:config>  
  32.   
  33. </beans>  

开启事务和注解配置

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <aop:aspectj-autoproxy></aop:aspectj-autoproxy>  
  2.                      
  3. <!-- 配置数据源 -->     
  4.   <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">     
  5.     <property name="driverClassName" value="com.mysql.jdbc.Driver"/>     
  6.     <property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8"/>     
  7.     <property name="username" value="root"/>     
  8.     <property name="password" value=""/>     
  9.      <!-- 连接池启动时的初始值 -->     
  10.      <property name="initialSize" value="1"/>     
  11.      <!-- 连接池的最大值 -->     
  12.      <property name="maxActive" value="500"/>     
  13.      <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->     
  14.      <property name="maxIdle" value="2"/>     
  15.      <!--  最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->     
  16.      <property name="minIdle" value="1"/>     
  17.   </bean>    
  18.      
  19. <!-- 配置事务管理器 -->  
  20.  <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">     
  21.     <property name="dataSource" ref="dataSource"/>     
  22.   </bean>    
  23.   <!-- 配置业务bean -->  
  24.    <bean id="personService" class="com.persia.service.impl.PersonServiceImpl">  
  25.     <property name="ds" ref="dataSource"></property>  
  26.   </bean>  
  27.     
  28.     
  29.     <!-- 使用XML来使用事务管理-->    
  30. <aop:config>    
  31.     <!-- 配置一个切面,和需要拦截的类和方法 -->     
  32.     <aop:pointcut id="transactionPointcut" expression="execution(* com.persia.service..*.*(..))"/>    
  33.     <aop:advisor advice-ref="txAdvice" pointcut-ref="transactionPointcut"/>    
  34. </aop:config>   
  35. <!-- 配置一个事务通知 -->      
  36. <tx:advice id="txAdvice" transaction-manager="txManager">    
  37.       <tx:attributes>   
  38.       <!-- 方法以get开头的,不使用事务 -->   
  39.         <tx:method name="get*" read-only="true" propagation="NOT_SUPPORTED"/>   
  40.       <!-- 其他方法以默认事务进行 -->   
  41.         <tx:method name="*"/>    
  42.       </tx:attributes>    
  43. </tx:advice>    


SSH配置

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <!-- 配置数据源 -->     
  2.   <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">     
  3.     <property name="driverClassName" value="com.mysql.jdbc.Driver"/>     
  4.     <property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8"/>     
  5.     <property name="username" value="root"/>     
  6.     <property name="password" value=""/>     
  7.      <!-- 连接池启动时的初始值 -->     
  8.      <property name="initialSize" value="1"/>     
  9.      <!-- 连接池的最大值 -->     
  10.      <property name="maxActive" value="500"/>     
  11.      <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->     
  12.      <property name="maxIdle" value="2"/>     
  13.      <!--  最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->     
  14.      <property name="minIdle" value="1"/>     
  15.   </bean>    
  16.     
  17.   <!-- 配置hibernate的sessionFactory -->  
  18. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  19.  <property name="dataSource"><ref bean="dataSource" /></property>  
  20.   <property name="mappingResources">  
  21.       <list>  
  22.         <value>com/persia/model/Person.hbm.xml</value>  
  23.       </list>  
  24.    </property>  
  25.      
  26.      <!-- 1.首先在sessionFactory里面配置以上3条设置 -->  
  27.         <!-- 2.然后得在类路径下面添加一个ehcache.xml的缓存配置文件 -->  
  28.         <!-- 3.最后在要使用缓存的实体bean的映射文件里面配置缓存设置 -->  
  29.              <!--使用二级缓存-->   
  30.              <!-- 不使用查询缓存,因为命中率不是很高 -->   
  31.              <!-- 使用Ehcache缓存产品 -->    
  32.   <property name="hibernateProperties">  
  33.       <value>  
  34.           hibernate.dialect=org.hibernate.dialect.MySQL5Dialect  
  35.           hibernate.hbm2ddl.auto=update  
  36.           hibernate.show_sql=false  
  37.           hibernate.format_sql=false  
  38.           hibernate.cache.use_second_level_cache=true  
  39.                 hibernate.cache.use_query_cache=false  
  40.              hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider  
  41.       </value>  
  42.       </property>  
  43. </bean>  
  44.   
  45. <!-- 配置Spring针对hibernate的事务管理器 -->  
  46. <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">  
  47.     <property name="sessionFactory" ref="sessionFactory"/>  
  48. </bean>  
  49.   
  50. <!-- 配置使用注解的方式来使用事务 -->   
  51. <tx:annotation-driven transaction-manager="txManager"/>  
  52.   
  53. <!-- 使用手工配置的注解方式来注入bean -->  
  54. <context:annotation-config></context:annotation-config>  
  55.   
  56. <!--定义要注入的业务bean -->  
  57. <bean id="personService" class="com.persia.service.impl.PersonServiceImpl"></bean>  
  58.   
  59. <!--将Struts的action交给Spring容器来管理 -->  
  60. <bean name="/person/list" class="com.persia.struts.PersonListAction">  
  61. <!--1.这里要求name和struts-config里面的action的path名称一致,因为id不允许有特殊字符-->  
  62. <!--2.还得在Struts-config文件里面添加Spring的请求处理器,该处理器会根据action的path属性到Spring容器里面寻找这个bean,若找到了则用这个bean来处理用户的请求-->  
  63. <!--3.然后去掉action的type标签和值(可选),当Spring处理器找不到该bean时,才会使用Struts的action-->  
  64. <!--4.最后在action里面使用Spring的注入方式来注入业务bean-->  
  65. </bean>  
  66.   
  67. <bean name="/person/manage" class="com.persia.struts.PersonManageAction"></bean>  


SSH2配置

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <!-- 配置数据源 -->     
  2.   <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">     
  3.     <property name="driverClassName" value="com.mysql.jdbc.Driver"/>     
  4.     <property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8"/>     
  5.     <property name="username" value="root"/>     
  6.     <property name="password" value=""/>     
  7.      <!-- 连接池启动时的初始值 -->     
  8.      <property name="initialSize" value="1"/>     
  9.      <!-- 连接池的最大值 -->     
  10.      <property name="maxActive" value="500"/>     
  11.      <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->     
  12.      <property name="maxIdle" value="2"/>     
  13.      <!--  最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->     
  14.      <property name="minIdle" value="1"/>     
  15.   </bean>    
  16.     
  17.   <!-- 配置hibernate的sessionFactory -->  
  18. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  19.  <property name="dataSource"><ref bean="dataSource" /></property>  
  20.   <property name="mappingResources">  
  21.       <list>  
  22.         <value>com/persia/model/Person.hbm.xml</value>  
  23.       </list>  
  24.    </property>  
  25.      
  26.      <!-- 1.首先在sessionFactory里面配置以上3条设置 -->  
  27.         <!-- 2.然后得在类路径下面添加一个ehcache.xml的缓存配置文件 -->  
  28.         <!-- 3.最后在要使用缓存的实体bean的映射文件里面配置缓存设置 -->  
  29.              <!--使用二级缓存-->   
  30.              <!-- 不使用查询缓存,因为命中率不是很高 -->   
  31.              <!-- 使用Ehcache缓存产品 -->    
  32.   <property name="hibernateProperties">  
  33.       <value>  
  34.           hibernate.dialect=org.hibernate.dialect.MySQL5Dialect  
  35.           hibernate.hbm2ddl.auto=update  
  36.           hibernate.show_sql=false  
  37.           hibernate.format_sql=false  
  38.           hibernate.cache.use_second_level_cache=true  
  39.                 hibernate.cache.use_query_cache=false  
  40.              hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider  
  41.       </value>  
  42.       </property>  
  43. </bean>  
  44.   
  45. <!-- 配置Spring针对hibernate的事务管理器 -->  
  46. <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">  
  47.     <property name="sessionFactory" ref="sessionFactory"/>  
  48. </bean>  
  49.   
  50. <!-- 配置使用注解的方式来使用事务 -->   
  51. <tx:annotation-driven transaction-manager="txManager"/>  
  52.   
  53. <!-- 使用手工配置的注解方式来注入bean -->  
  54. <context:annotation-config></context:annotation-config>  
  55.   
  56. <!--定义要注入的业务bean -->  
  57. <bean id="personService" class="com.persia.service.impl.PersonServiceImpl"></bean>  
  58.   
  59. <!--注入Struts 2的action -->  
  60. <bean id="personList" class="com.persia.struts2.action.PersonListAction"></bean>  


SSJ配置

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <!-- 使用手工配置的注解方式来注入bean -->  
  2. <context:annotation-config></context:annotation-config>  
  3.   
  4. <!-- 1.配置Spring集成JPA -->  
  5. <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">  
  6.       <property name="persistenceUnitName" value="SpringJPAPU"/>  
  7. </bean>  
  8.   
  9. <!--2.配置Spring针对JPA的事务 -->  
  10.     <bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">  
  11.      <property name="entityManagerFactory" ref="entityManagerFactory"/>  
  12. </bean>  
  13.   
  14. <!--3.开启事务注解 -->  
  15. <tx:annotation-driven transaction-manager="txManager"/>  
  16.     
  17. <!--以上3个Spring集成JPA的配置,在web项目先添加Spring支持,后添加JPA支持时会自动生成 -->  
  18.   
  19. <!-- 配置业务bean -->  
  20. <bean id="personService" class="com.persia.service.impl.PersonServiceImpl"></bean>  
  21.   
  22. <!-- 配置Struts的action -->  
  23. <bean name="/person/list" class="com.persia.struts.PersonListAction"/>  
  24. <bean name="/person/manage" class="com.persia.struts.PersonManageAction"/>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值