Spring
文章平均质量分 58
艺术就是爆炸
这个作者很懒,什么都没留下…
展开
-
深入解读Spring Framework IoC容器(第一弹:IoC容器和Bean概述)
Spring IoC容器和Bean概述我们主要来看一下Spring框架实现控制反转(IoC)的原理。IoC也被称作依赖注入(DI)。他是一个对象定义依赖项的过程。当创建bean后,IoC容器再将这些依赖项注入进去。这个过程是反转的,因此得名控制反转 (IoC)。org.springframework.beans和org.springframework.context包是Spring框架IoC容器的基原创 2017-01-03 15:48:20 · 763 阅读 · 0 评论 -
深入解读Spring Framework事务管理(第三弹:基于AspectJ的XML声明式事务管理)
Spring Framework的声明式事务管理是建立在Spring的面向切面编程(aspect-oriented programming, AOP) 上的。为了说明清楚Spring的声明式事务到底要怎么做,我们借用Spring官方提供的示例代码。 假设我们有一个服务层接口,叫FooService,代码如下:package x.y.service;public interface Foo原创 2016-12-31 16:46:40 · 1146 阅读 · 0 评论 -
深入解读Spring Framework事务管理(第四弹:基于@Transactional注解的声明式事务管理)
基于注解的声明式事务,主要使用的是@Transactional注解,下面我们来具体看一下。// 这个service我们要将他事务化@Transactionalpublic class DefaultFooService implements FooService { Foo getFoo(String fooName); Foo getFoo(String fooNam原创 2016-12-31 19:55:24 · 560 阅读 · 0 评论 -
深入解读Spring Framework事务管理(第五弹:同时执行事务通知和自定义的分析通知)
应用场景如果我们要在执行事务的同时执行一些基本的分析通知,要怎么做呢? 当我们执行updateFoo(Foo)方法时,我们希望有这样的动作: 1. 配置了分析通知的切面启动 2. 事务通知执行 3. 被添加了通知的对象的方法执行 4. 提交事务 5. 分析切面报告整个事务方法执行的准确时间分析切面的类分析切面的代码如下,通知的排序有Ordered接口控制:package x.y;impo原创 2016-12-31 20:41:22 · 718 阅读 · 0 评论 -
深入解读Spring Framework IoC容器(第八弹:Bean的初始化和销毁)
初始化回调函数org.springframework.beans.factory.InitializingBean接口,可以让容器在设置好bean的所有必要属性后,执行初始化。InitializingBean接口仅指定了一个方法:void afterPropertiesSet() throws Exception;如:<bean id="exampleInitBean" class="example原创 2017-02-18 20:48:21 · 414 阅读 · 0 评论 -
深入解读Spring Framework Web MVC(第一弹:Spring Web MVC概述)
Spring Web MVC简介Spring Web MVC(即模型-视图-控制器)框架是围绕DispatcherServlet而设计的,其支持可配置的handler映射,视图解析,本地化、时区和主题的解析以及文件上传的功能。DispatcherServlet负责将请求分发到不同的handler。还可以创建RESTful web站点和应用程序。Spring的数据绑定相当灵活,比如,Spring可以将原创 2017-02-19 13:37:43 · 1027 阅读 · 0 评论 -
深入解读Spring Framework Web MVC(第二弹:DispatcherServlet详解)
DispatcherServlet简介Spring web MVC框架基于请求驱动,用一个核心Servlet转发请求到对应的Controller。然而Spring的DispatcherServlet并不仅仅拥有这些,因为Spring MVC框架集成了Spring IOC容器,因此,Spring MVC可以使用Spring 提供的其他功能。DispatcherServlet的声明DispatcherS原创 2017-02-19 18:12:39 · 768 阅读 · 0 评论 -
深入解读Spring Framework Web MVC(第三弹:使用@Controller定义控制器)
先来看一段示例:@Controllerpublic class HelloWorldController { @RequestMapping("/helloWorld") public String helloWorld(Model model) { model.addAttribute("message", "Hello World!"); retu原创 2017-02-19 19:06:16 · 546 阅读 · 0 评论 -
深入解读Spring Framework Web MVC(第四弹:使用@RequestMapping映射请求)
@RequestMapping的基本用法我们可以在类或指定handler方法上,使用@RequestMapping注解来映射URL。我们来看一个例子:@Controller@RequestMapping("/appointments")public class AppointmentsController { private final AppointmentBook appointmen原创 2017-02-19 21:22:07 · 1829 阅读 · 0 评论 -
深入解读Spring Framework Web MVC(第五弹:@RequestMapping中的头字段值)
可消费的媒体类型我们可以指定一系列可消费的媒体类型来压缩映射。当Content-Type请求头匹配可消费的媒体类型,才认为这个请求是可映射的。如:@PostMapping(path = "/pets", consumes = "application/json")public void addPet(@RequestBody Pet pet, Model model) { // imple原创 2017-02-19 22:45:56 · 1021 阅读 · 0 评论 -
深入解读Spring Framework Web MVC(第六弹:定义@RequestMapping处理方法)
@RequestParam将请求参数绑定到方法参数在控制器里,使用@RequestParam可以将请求参数绑定到方法参数。如:@Controller@RequestMapping("/pets")@SessionAttributes("pet")public class EditPetForm { // ... @GetMapping public String setup原创 2017-02-22 17:42:53 · 820 阅读 · 0 评论 -
深入解读Spring Framework Web MVC(第七弹:@ModelAttribute的使用)
在方法上使用@ModelAttribute@ModelAttribute可用在方法或方法参数中。 在方法上使用@ModelAttribute注解,表示此方法的目的在于添加一个或多个模型属性。这种方法所支持的参数类型与@RequestMapping一样,不同的是,它不能直接映射到request。另外,在同一个控制器里,@ModelAttribute会在@RequestMapping之前调用。如://原创 2017-02-23 17:13:56 · 1420 阅读 · 0 评论 -
深入解读Spring Framework IoC容器(第七弹:不同作用域Bean的依赖)
通常情况下,我们都是把一个单例bean注入到另一个单例bean,这不会有作用域的问题。 但是不同作用域的Spring Bean之间互相依赖,如果不做特殊定义,则只能在实例化Spring Bean时注入其所依赖的其他Spring Bean。比如以下定义:<bean id="userPreferences" class="com.foo.UserPreferences" scope="session"原创 2017-01-06 16:30:01 · 788 阅读 · 0 评论 -
深入解读Spring Framework事务管理(第二弹:编程式事务管理的使用方式)
Spring Framework提供了两种方式的编程式事务管理: 1. 使用TransactionTemplate 2. 直接使用PlatformTransactionManager的一个实现 如果我们要进行编程式事务管理,一般都推荐使用TransactionTemplate方式。TransactionTemplate方式TransactionTemplate采用了像JdbcTemplate等原创 2016-12-28 14:09:25 · 1051 阅读 · 0 评论 -
深入解读Spring Framework IoC容器(第二弹:依赖注入的方式)
依赖注入 (DI) 是指定义对象之间的依赖关系的过程。容器的工作就是创建bean并注入依赖关系。这个过程来由容器来控制bean的实例或者其依赖关系,因此它有另外一个名字叫控制反转 (IoC)。DI主要有两种注入方式,即构造器注入和Setter注入。构造器注入基于构造器注入DI通过调用带参数的构造器来实现,每个参数代表着一个依赖关系。public class ExampleBean { priv原创 2017-01-03 17:39:51 · 589 阅读 · 0 评论 -
Spring笔记(第一弹:简单模拟Spring IOC)
Spring博大精深,功能非常多。我们这里简单的模拟一下spring的IOC。先把model,dao,service写出来,写一个最简单的为例。原创 2015-08-30 19:54:59 · 566 阅读 · 0 评论 -
Spring笔记(第二弹:搭建第一个Spring工程)
我们来搭建一个最简单的Spring工程,暂时不使用Maven。准备好相应的环境:我们需要如下内容: - eclipse,这里我选用的是Eclipse Java EE IDE for Web Developers.Version: Mars Release (4.5.0) - JDK,这里我选用的是JDK1.8 - Spring框架,这里我选用的是spring-frame原创 2016-12-11 12:53:46 · 1213 阅读 · 0 评论 -
Spring笔记(第三弹:使用JUnit对Spring工程进行测试)
在“Spring笔记(第二弹:搭建第一个Spring工程)”中,我们在测试类中写了一个main方法,直接右键Run As->Java Application来进行测试。现在我们使用JUnit来进行测试。 引入JUnit的包 在Java Build Path里点击”Add Library”,选择JUnit,然后选择JUnit4,finish。这样就引入了JUnit的包。 然后我们把上次的Test原创 2016-12-11 15:50:44 · 1098 阅读 · 0 评论 -
Spring笔记(第四弹:使用Maven创建一个Spring MVC工程)
创建一个maven工程新建一个项目,选择Maven下的Maven Project, next 不要选择“Create a simple project” next 选择“maven-archetype-webapp” next Group Id自己填,例如:com.demo Artifact Id自己填,例如:mavenSpringDemo finish 现在,创建出来的工程应该是原创 2016-12-11 21:30:55 · 709 阅读 · 0 评论 -
Spring笔记(第六弹:spring framework核心组件maven依赖关系)
spring相关的有很多的jar包,这里介绍下spring framework核心组件的maven相关依赖关系。corespring-coreIOC的最基本实现,依赖:commons-loggingspring-beansbean工厂与bean的装配,依赖:spring-corespring-contextspring的context上下文即IoC容器,依赖:spring-core,spring-b原创 2016-12-14 15:19:56 · 1549 阅读 · 0 评论 -
深入解读Spring Framework IoC容器(第三弹:依赖注入配置详解)
直接变量元素的value值可以通过字符串形式来指定属性和构造器参数。id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> property name="driverClassName" value="com.mysql.jdbc.Driver"/>原创 2017-01-05 00:05:57 · 513 阅读 · 0 评论 -
深入解读Spring Framework IoC容器(第四弹:p命名空间和c命名空间)
p命名空间使用p命名空间可以用bean 元素的属性代替<property/>元素。<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org原创 2017-01-05 00:27:37 · 2097 阅读 · 0 评论 -
深入解读Spring Framework IoC容器(第五弹:懒加载)
懒加载也称延迟加载或延迟初始化。Spring默认在启动时将所有单例bean提前进行实例化,也就是说默认不是懒加载的。Ioc容器会把懒加载的bean在第一次需要的时候才实例化而不是在容器启动时就实例化。在XML配置文件中,懒加载通过<bean/>元素的lazy-init属性进行控制:<bean id="lazy" class="com.foo.ExpensiveToCreateBean" lazy-i原创 2017-01-05 21:00:01 · 1561 阅读 · 0 评论 -
深入解读Spring Framework IoC容器(第六弹:Bean的作用域)
Bean作用域(scope)有如下种类: Scope Description singleton 这是默认的,每个Spring IoC容器中一个bean定义只对应一个实例。 prototype 一个bean定义对应多个实例。 request 一个bean定义作用于一个HTTP request生命周期。仅在基于web的Spring ApplicationContext中有原创 2017-01-05 22:59:24 · 624 阅读 · 0 评论 -
深入解读Spring Framework事务管理(第一弹:Spring Framework的事务抽象)
Spring Framework事务管理高层抽象主要包括3个接口: - PlatformTransactionManager 事务管理器 - TransactionDefinition 事务定义信息(隔离、传播、超时、只读) - TransactionStatus 事务具体运行状态 我们来具体看一下这三个接口。PlatformTransactionManager源码分析原创 2016-12-29 16:16:47 · 691 阅读 · 0 评论 -
深入解读Spring Framework Web MVC(第八弹:@SessionAttributes的使用)
@SessionAttributes可以让我们指定把Model中的哪些数据放到Session中,也就是说,使模型对象的特定属性具有 Session范围的作用域。例如:@Controller@RequestMapping("/pets")@SessionAttributes("pet")public class EditPetForm { // ... @RequestMapping原创 2017-02-23 18:57:55 · 363 阅读 · 0 评论