spring

Posted jokerzou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring相关的知识,希望对你有一定的参考价值。

 一.Spring框架简介

  Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。
  目的:解决企业应用开发的复杂性
  功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
  范围:任何Java应用
  Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。

 

 

二.Spring的配置

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

  下面列举的是一份比较完整的配置文件模板,文档中各XML标签节点的基本用途也给出了详细的解释。

技术图片

技术图片

技术图片

技术图片

技术图片

 


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

 

  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     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  6     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">  
  7     <!-- 定义使用C3P0连接池的数据源 -->  
  8     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">  
  9     <!-- 指定连接数据库的JDBC驱动 -->  
 10     <property name="driverClass">  
 11      <value>com.mysql.jdbc.Driver</value>  
 12      </property>  
 13     <!-- 连接数据库所用的URL -->  
 14     <property name="jdbcUrl">  
 15     <value>jdbc:mysql://localhost:3306/eportal?useUnicode=  
 16     true&amp;characterEncoding=gbk</value>  
 17     </property>  
 18     <!-- 连接数据库的用户名 -->  
 19     <property name="user">  
 20     <value>root</value>  
 21     </property>  
 22     <!-- 连接数据库的密码 -->  
 23     <property name="password">  
 24     <value>root</value>  
 25     </property>  
 26     <!-- 设置数据库连接池的最大连接数 -->  
 27     <property name="maxPoolSize">  
 28     <value>20</value>  
 29     </property>  
 30     <!-- 设置数据库连接池的最小连接数 -->  
 31     <property name="minPoolSize">  
 32     <value>2</value>  
 33     </property>  
 34     <!-- 设置数据库连接池的初始化连接数 -->  
 35     <property name="initialPoolSize">  
 36     <value>2</value>  
 37     </property>  
 38     <!-- 设置数据库连接池的连接的最大空闲时间,单位为秒 -->  
 39     <property name="maxIdleTime">  
 40     <value>20</value>  
 41     </property>  
 42     </bean>  
 43     <!-- 定义Hibernate的SessionFactory -->  
 44     <bean id="sessionFactory" class="org.springframework.orm.
 45     hibernate3.LocalSessionFactoryBean">  
 46     <!-- 依赖注入上面定义的数据源dataSource -->  
 47     <property name="dataSource" ref="dataSource"/>  
 48     <!-- 注册Hibernate的ORM映射文件 -->  
 49     <property name="mappingResources">  
 50     <list>  
 51     <value>com/eportal/ORM/News.hbm.xml</value>  
 52     <value>com/eportal/ORM/Category.hbm.xml</value>  
 53     <value>com/eportal/ORM/Memberlevel.hbm.xml</value>  
 54     <value>com/eportal/ORM/Cart.hbm.xml</value>  
 55     <value>com/eportal/ORM/Traffic.hbm.xml</value>  
 56     <value>com/eportal/ORM/Newsrule.hbm.xml</value>  
 57     <value>com/eportal/ORM/Merchandise.hbm.xml</value>  
 58     <value>com/eportal/ORM/Admin.hbm.xml</value>  
 59     <value>com/eportal/ORM/Orders.hbm.xml</value>  
 60     <value>com/eportal/ORM/Cartselectedmer.hbm.xml</value>  
 61     <value>com/eportal/ORM/Newscolumns.hbm.xml</value>  
 62     <value>com/eportal/ORM/Member.hbm.xml</value>  
 63     </list>  
 64     </property>  
 65     <!-- 设置Hibernate的相关属性 -->  
 66     <property name="hibernateProperties">  
 67     <props>  
 68     <!-- 设置Hibernate的数据库方言 -->  
 69     <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>  
 70     <!-- 设置Hibernate是否在控制台输出SQL语句,开发调试阶段通常设为true -->  
 71     <prop key="show_sql">true</prop>  
 72     <!-- 设置Hibernate一个提交批次中的最大SQL语句数 -->  
 73     <prop key="hibernate.jdbc.batch_size">50</prop>  
 74     <prop key="show_sql">50</prop>   
 75     </props>  
 76     </property>  
 77     </bean>  
 78     <!--定义Hibernate的事务管理器HibernateTransactionManager -->  
 79     <bean id="transactionManager"   
 80     class="org.springframework.orm.hibernate3.HibernateTransactionManager">  
 81     <!-- 依赖注入上面定义的sessionFactory -->  
 82     <property name="sessionFactory" ref="sessionFactory"/>  
 83     </bean>  
 84     <!--定义Spring的事务拦截器TransactionInterceptor -->  
 85     <bean id="transactionInterceptor"   
 86     class="org.springframework.transaction.interceptor.TransactionInterceptor">  
 87     <!--  依赖注入上面定义的事务管理器transactionManager -->  
 88     <property name="transactionManager" ref="transactionManager"/>  
 89       <!-- 定义需要进行事务拦截的方法及所采用的事务控制类型 -->  
 90     <property name="transactionAttributes">  
 91     <props>  
 92     <!-- 以browse、list、load、get及is开头的所有方法采用只读型事务控制类型 -->  
 93     <prop key="browse*">PROPAGATION_REQUIRED,readOnly</prop>  
 94     <prop key="list*">PROPAGATION_REQUIRED,readOnly</prop>  
 95     <prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>  
 96     <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>  
 97     <prop key="is*">PROPAGATION_REQUIRED,readOnly</prop>  
 98     <!-- 所有方法均进行事务控制,如果当前没有事务,则新建一个事务 -->  
 99     <prop key="*">PROPAGATION_REQUIRED</prop>  
100     </props>  
101     </property>  
102     </bean>  
103     <!-- 定义BeanNameAutoProxyCreatorf进行Spring的事务处理-->  
104     <bean class="org.springframework.aop.framework.autoproxy.  
105     BeanNameAutoProxyCreator">  
106     <!--  针对指定的bean自动生成业务代理 -->  
107     <property name="beanNames">   
108     <list>  
109     <value>adminService</value>  
110     <value>columnsService</value>  
111     <value>newsService</value>  
112     <value>crawlService</value>  
113     <value>memberLevelService</value>  
114     <value>memberService</value>  
115     <value>categoryService</value>  
116     <value>merService</value>  
117     <value>cartService</value>  
118     <value>ordersService</value>  
119     <value>trafficService</value>  
120     </list>  
121     </property>  
122     <!--  这个属性为true时,表示被代理的是目标类本身而不是目标类的接口 -->  
123     <property name="proxyTargetClass">  
124     <value>true</value>  
125     </property>  
126        <!--  依赖注入上面定义的事务拦截器transactionInterceptor -->  
127     <property name="interceptorNames">  
128     <list>  
129     <value>transactionInterceptor</value>   
130     </list>  
131     </property>  
132     </bean>  
133     <!-- 装配通用数据库访问类BaseDAOImpl -->  
134     <bean id="dao" class="com.eportal.DAO.BaseDAOImpl">  
135     <property name="sessionFactory" ref="sessionFactory"/>  
136     </bean>  
137     <!-- 部署系统用户管理业务逻辑组件AdminServiceImpl -->   
138     <bean id="adminService" class="com.eportal.service.AdminServiceImpl">  
139     <property name="dao" ref="dao"/>  
140     </bean>  
141     <!-- 部署新闻栏目管理业务逻辑组件ColumnsServiceImpl -->   
142     <bean id="columnsService" class="com.eportal.service.ColumnsServiceImpl">  
143     <property name="dao" ref="dao"/>  
144     </bean>  
145     <!-- 部署新闻管理业务逻辑组件NewsServiceImpl -->   
146     <bean id="newsService" class="com.eportal.service.NewsServiceImpl">  
147     <property name="dao" ref="dao"/>  
148     </bean>  
149     <!-- 部署新闻采集规则业务逻辑组件CrawlServiceImpl -->   
150     <bean id="crawlService" class="com.eportal.service.CrawlServiceImpl">  
151     <property name="dao" ref="dao"/>  
152     </bean>  
153     <!-- 部署会员级别管理业务逻辑组件MemberLevelServiceImpl -->   
154     <bean id="memberLevelService" class="com.eportal.service.
155     MemberLevelServiceImpl">  
156     <property name="dao" ref="dao"/>  
157     </bean>  
158     <!-- 部署会员管理业务逻辑组件MemberServiceImpl -->   
159     <bean id="memberService" class="com.eportal.service.MemberServiceImpl">  
160     <property name="dao" ref="dao"/>  
161     </bean>  
162     <!-- 部署商品分类管理业务逻辑组件CategoryServiceImpl -->   
163     <bean id="categoryService" class="com.eportal.service.CategoryServiceImpl">  
164     <property name="dao" ref="dao"/>  
165     </bean>  
166     <!-- 部署商品管理业务逻辑组件MerchandiseServiceImpl -->   
167     <bean id="merService" class="com.eportal.service.MerchandiseServiceImpl">  
168     <property name="dao" ref="dao"/>  
169     </bean>  
170     <!-- 部署购物车管理业务逻辑组件CartServiceImpl -->   
171     <bean id="cartService" class="com.eportal.service.CartServiceImpl">  
172     <property name="dao" ref="dao"/>  
173     </bean>  
174     <!-- 部署订单管理业务逻辑组件OrderServiceImpl -->   
175     <bean id="ordersService" class="com.eportal.service.OrderServiceImpl">  
176     <property name="dao" ref="dao"/>  
177     </bean>  
178     <!-- 部署流量统计业务逻辑组件TrafficServiceImpl -->   
179     <bean id="trafficService" class="com.eportal.service.TrafficServiceImpl">  
180     <property name="dao" ref="dao"/>  
181     </bean>  
182     <!-- 部署Struts 2负责系统用户管理的控制器AdminAction -->   
183     <bean id="adminAction" class="com.eportal.struts.action.
184     AdminAction" scope="prototype">  
185     <property name="service" ref="adminService"/>  
186     </bean>   
187     <!-- 部署Struts 2负责新闻栏目管理的控制器ColumnsAction -->   
188     <bean id="columnsAction" class="com.eportal.struts.action.
189     ColumnsAction" scope="prototype">  
190     <property name="service" ref="columnsService"/>  
191     </bean>  
192     <!-- 部署Struts 2负责新闻管理的控制器NewsAction -->   
193     <bean id="newsAction" class="com.eportal.struts.action.
194     NewsAction" scope="prototype">  
195     <property name="service" ref="newsService"/>  
196     <property name="columnsService" ref="columnsService"/>  
197     </bean>  
198     <!-- 部署Struts 2负责新闻采集规则管理的控制器CrawlAction -->   
199     <bean id="crawlAction" class="com.eportal.struts.action.
200     CrawlAction" scope="prototype">  
201     <property name="service" ref="crawlService"/>  
202     <property name="columnsService" ref="columnsService"/>  
203     </bean>  
204     <!-- 部署Struts 2负责会员级别管理的控制器MemberlevelAction -->   
205     <bean id="memberLeveAction" class="com.eportal.struts.action.MemberlevelAction"   
206     scope="prototype">  
207     <property name="service" ref="memberLevelService"/>  
208     </bean>  
209     <!-- 部署Struts 2负责会员管理的控制器MemberAction -->   
210     <bean id="memberAction" class="com.eportal.struts.action.
211     MemberAction" scope="prototype">  
212     <property name="service" ref="memberService"/>  
213     <property name="memberLevelService" ref="memberLevelService"/>  
214     </bean>  
215     <!-- 部署Struts 2负责商品分类管理的控制器CategoryAction -->   
216     <bean id="categoryAction" class="com.eportal.struts.action.
217     CategoryAction" scope="prototype">  
218     <property name="service" ref="categoryService"/>  
219     </bean>  
220     <!-- 部署Struts 2负责商品管理的控制器MerchandiseAction -->   
221     <bean id="merchandiseAction" class="com.eportal.struts.action.MerchandiseAction"   
222     scope="prototype">  
223     <property name="service" ref="merService"/>  
224     <property name="cateService" ref="categoryService"/>  
225     </bean>  
226     <!-- 部署Struts 2负责购物车管理的控制器CartAction -->   
227     <bean id="cartAction" class="com.eportal.struts.
228     action.CartAction" scope="prototype">  
229     <property name="service" ref="cartService"/>  
230     <property name="merService" ref="merService"/>  
231     </bean>  
232     <!-- 部署Struts 2负责订单管理的控制器OrdersAction -->   
233     <bean id="ordersAction" class="com.eportal.struts.
234     action.OrdersAction" scope="prototype">  
235     <property name="service" ref="ordersService"/>  
236     <property name="cartService" ref="cartService"/>  
237     <property name="memberService" ref="memberService"/>  
238     </bean>  
239     <!-- 部署Struts 2负责流量统计的控制器TrafficAction -->   
240     <bean id="trafficAction" class="com.eportal.struts.
241     action.TrafficAction" scope="prototype">  
242     <property name="service" ref="trafficService"/>  
243     </bean>   
244     </beans> 

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

 

以上是关于spring的主要内容,如果未能解决你的问题,请参考以下文章

Spring boot:thymeleaf 没有正确渲染片段

What's the difference between @Component, @Repository & @Service annotations in Spring?(代码片段

spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段

Spring Rest 文档。片段生成时 UTF-8 中间字节无效 [重复]

解决spring-boot启动中碰到的问题:Cannot determine embedded database driver class for database type NONE(转)(代码片段

一张图帮你记忆,Spring Boot 应用在启动阶段执行代码的几种方式