Spring学习

一、原理

1、spring的核心机制是IOC(反转控制、依赖注入)和AOP(面向切面编程)。

注1:spring是一站式的框架,对EE的三层有每一层的解决方案,Web层,业务层,数据访问层.Web层:SpringMVC , 持久层:JDBC Template , 业务层 : Spring的Bean管理。 IOC思想 : 工厂+反射+配置文件,底层原理就是提供一个工厂Bean,然后提供一个配置文件,把一些类全都配置在配置文件中,通过xml解析获得类的全路径,从而反射获得类的实例。

注2:AOP就是面向切面编程,通过预编译的方式和运行期动态代理实现程序功能的统一维护的技术。主要的功能是 : 日志记录,性能统计,安全控制,事务处理,异常处理等。

2、概念:

   (1)当摸个角色需要另一个角色协助的时候,传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在Spring中穿件被调用者的实例不在由被调用者来完成,因此称为控制反转。创建被调用者的工作由Spring来完成,然后注入调用者,因此也称为依赖注入。(特征:降低了组建的耦合性)

(2)面向对象编程将程序分解成各个层次的对象,面向切面编程将程序运行过程分解成各个切面。(特征:各步骤之间良好的隔离型,源代码无关性)

二、事务

1、事务

事务:是逻辑上的一组操作,要么全部成功,要么全部失败

事务的特性 :

  • 原子性: 事务不可分隔
  • 一致性: 事务执行的前后,数据完整性保持一致.
  • 隔离性: 一个事务执行的时候,不应该收到其他事务的干扰
  • 持久性: 一旦结束,数据永久的保存到数据库

2、spring中的事务管理

分层开发: 事务处于service层

Spring的事务管理分成两类:

  • 编程式事务管理:    手动编写代码完成事务管理.
  • 声明式事务管理:    不需要手动编写代码,配置

spring中的注解:

  • @Component("")
  • @Service("") 装配Bean,标示为service类
  • @Repository("") 装配Bean,标示为dao类
  • @Controller("") 装配Bean,标示为controller类
  • @Autowired @Qualifier("userDao"): 在类中注入Bean
  • @Aspect 定义切面
  • @Before("execution(* com.luogg.demo1.UserDao.*(..))") 前置增强
  • @RunWith(SpringJUnit4ClassRunner.class)
  • @ContextConfiguration("classpath:applicationContext.xml")单元测试注解
  • @Transactional 声明事务

这里讲下声明事务管理的操作:配置XML文件,(包括事务管理,连接池的配置)  --->   在需要使用注解的方法前边加上注解@Transactional

 1 <!-- 引入外部属性文件. -->
 2     <context:property-placeholder location="classpath:jdbc.properties"/>
 3
 4     <!-- 配置c3p0连接池 -->
 5     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
 6         <property name="driverClass" value="${jdbc.driver}"/>
 7         <property name="jdbcUrl" value="${jdbc.url}"/>
 8         <property name="user" value="${jdbc.user}"/>
 9         <property name="password" value="${jdbc.password}"/>
10     </bean>
11
12     <!-- 业务层类 -->
13     <bean id="accountService" class="cn.itcast.spring3.demo4.AccountServiceImpl">
14         <!-- 在业务层注入Dao -->
15         <property name="accountDao" ref="accountDao"/>
16     </bean>
17
18     <!-- 持久层类 -->
19     <bean id="accountDao" class="cn.itcast.spring3.demo4.AccountDaoImpl">
20         <!-- 注入连接池的对象,通过连接池对象创建模板. -->
21         <property name="dataSource" ref="dataSource"/>
22     </bean>
23
24     <!-- 事务管理器 -->
25     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
26         <property name="dataSource" ref="dataSource"/>
27     </bean>
28
29     <!-- 开启注解的事务管理 -->
30     <tx:annotation-driven/>
时间: 2024-12-10 13:58:38

Spring学习的相关文章

Struts2 + Spring 学习(一)搭建struts开发环境

·为Web应用增加Struts2支持 1. 登陆struts2官网下载struts2的最新版,本文所用的是Struts 2.3.16.2 我们所下载的压缩包内内容应给如下 其中,apps包含了struts2的实例应用,docs包含了struts2的相关文档,lib包含了Struts2框架的核心类库以及struts2的第三方插件类库,src包含了struc包含了struts2框架的全部源码. 2. 在Eclipse新建Web工程,将是所用到的类库放到WEB-INF/路径下 3. 编辑Web应用的w

Spring学习笔记(一)

Spring学习笔记(一) Spring核心思想: IOC:  Inversion Of Control (控制反转) / DI: Dependency Injection (依赖注入) AOP: Aspect Oriented Programming (面向切面编程) IOC 1. 简单的应用 Model package com.wangj.spring.model; public class User { private String username; private String pas

不错的Spring学习笔记(转)

Spring学习笔记(1)----简单的实例 ---------------------------------   首先需要准备Spring包,可从官方网站上下载.   下载解压后,必须的两个包是spring.jar和commons-logging.jar.此外为了便于测试加入了JUnit包.   在Myeclipse中创建Java项目.   编写一个接口类,为了简单,只加入了一个方法.   Java代码   1.package com.szy.spring.interfacebean;  

spring学习一——基本搭建,属性注入的两种方式

今天用spring 3.2.5搭建了基本的环境,spring出的太快了,前段时间才3.2.5,今儿个一瞧已经上了4的版本了,稍后给出spring的jar下载地址,毕竟现在官网上找不到了啊. 废话少说了,spring 3.2.5已经将所有的依赖包都放在了dist的lib下面,并且都有doc包和源码包,很是方便.先导入所需的jar包:core,context,beans,expression 四个jar包,除此之外,还需导入commons-logging. 下一步,新建xml文件,建议名称为 app

Spring学习(一)tomcat加载web.xml、以及项目集成Spring支持

tomcat容器加载web.xml 一. 1 .启动一个 WEB 项目的时候, WEB 容器会去读取它的配置文件 web.xml ,读取 <listener> 和 <context-param> 两个结点. 2 .紧急着,容创建一个 ServletContext ( servlet 上下文),这个 web 项目的所有部分都将共享这个上下文. 3 .容器将 <context-param> 转换为键值对,并交给 servletContext . 4 .容器创建 <li

Spring学习系列之——第三章:Spring中Bean的配置(一)

Spring的配置形式有两种:基于XML配置和基于注解配置. Bean的配置方式有以下几种: 通过全类名,即通过反射的方式: 通过工厂方法,有静态工厂方法和实例工厂方法: 通过FactoryBean配置: 通过XML文件配置bean 本篇文章将按照下面的目录来说明基于XML的方式配置bean JavaBean的创建 通过XML配置的方式来配置bean XMLbean的配置: spring的依赖注入的方式 属性注入 构造器注入 工厂方法注入(很少使用) 测试方法 IoC容器的实例化: Applic

spring学习(一)

spring的核心是IOC和DI,首先要明白IOC和DI的概念. IOC,即Inverse of Control,反转控制,就是将原本在程序中手动创建service对象的控制权交给spring容器管理,简单的说就是对象的创建权交给了spring容器管理. DI,即Dependency Injection,依赖注入,在web应用中,action调用service层,service调用dao层,也就是action依赖service,service依赖dao,而在spring容器管理对象时,在创建be

spring 学习笔记1

Spring 学习记录 任何一个成功的应用都是由多个为了实现某一个业务目标而相互协作的组件构成的.这些组件必须彼此了解,并相互协作来完成工作. 在Spring 中,对象无需自己负责查找或创建与其关联的其他对象.相反,容器负责把需要相互合作的对象引用赋予各个对象. 创建应用对象之间协作关系的行为通常被称为(装配),这是依赖注入的本质.

Spring学习之Ioc控制反转(1)

开始之前: 1. 本博文为原创,转载请注明出处 2. 作者非计算机科班出身,如有错误,请多指正 ---------------------------------------------------------------------------开始啦啦啦啦啦------------------------------------------------------------------------------- 从开始接触spring起,听到最多的就是Ioc(控制反转)和AOP(面向切面编程

《Spring学习笔记》:Spring、Hibernate、struts2的整合(以例子来慢慢讲解,篇幅较长)

<Spring学习笔记>:Spring.Hibernate.struts2的整合(以例子来慢慢讲解,篇幅较长) 最近在看马士兵老师的关于Spring方面的视频,讲解的挺好的,到了Spring.Hibernate.struts2整合这里,由于是以例子的形式来对Spring+Hibernate+struts2这3大框架进行整合,因此,自己还跟着写代码的过程中,发现还是遇到了很多问题,因此,就记录下. 特此说明:本篇博文完全参考于马士兵老师的<Spring视频教程>. 本篇博文均以如下这