Spring
文章平均质量分 66
惜暮
这个作者很懒,什么都没留下…
展开
-
Spring的依赖注入
这篇文章主要是讲述:什么是Spring中的依赖注入,以及为什么要使用依赖注入。1. 什么是依赖注入(DI-Dependency Injection)依赖注入也叫控制反转(Inversion of Control,英文缩写为IOC),以我个人的理解简单点说就是:创建对象不再通过new关键字,而是从spring容器中去取,对象的创建是使用注入这种形式。2. 为什么要使用依赖注入?使用依赖注入主要是为了原创 2017-01-21 14:48:13 · 345 阅读 · 0 评论 -
【Spring】普通bean、FactoryBean、BeanFactory的区别与联系
在Spring中这三点比较容易混淆:一. FactoryBean、BeanFactory的区别其实这两点没有什么联系,只是命名上比较相似,所以常常被拿出来比较。BeanFactoryBeanFactory是IOC最基本的容器,负责生产和管理bean,它为其他具体的IOC容器实现提供了最基本的规范,例如DefaultListableBeanFactory, XmlBeanFactory, Applic原创 2017-05-27 17:38:07 · 4568 阅读 · 0 评论 -
【技术分享】-Spring的IOC
Spring的IOC一. 什么是控制反转,为什么叫控制反转 控制反转:就是把原先我们代码里面需要自己手动实现的对象创建、依赖的代码,反转给容器来帮忙实现。 IOC的思想是:Spring容器来实现这些相互依赖对象的创建、协调工作。对象只需要关心业务逻辑本身就可以了。从这方面来说,对象如何得到他的协作对象的责任被反转了(IOC、DI)。二. IOC依赖注入的方式有哪些?主要有三种注入方式原创 2017-05-05 18:15:57 · 1043 阅读 · 0 评论 -
SpringBoot-创建自己的starter和autoconfiguration
这篇文章主要是告诉我们怎么创建自己的SpringBoot autoconfigurationAuto-configuration classes能被绑定在一个外部jar包并且能被Spring Boot加载。每一个Auto-configuration能够被关联到一个starter,创建步骤(1)实现XxxxxxAutoConfiguration.class类,并加上@Conditional限制条件(原创 2017-09-13 09:12:06 · 3009 阅读 · 0 评论 -
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 引发的血案
故事背景今天在跑项目(SpringBoot+mybatis)时,当通过service调用DAO时,系统抛出了异常: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)很奇怪的异常,异常堆栈也没有关键的信息。从这句话大概的分析可以知道原因是:mybatis的Mapper接口不能够和XML映原创 2017-09-14 23:37:14 · 1516 阅读 · 0 评论 -
【SpringBoot】常用注解
@EnableAutoConfiguration启动自动装载:使用了这个注解之后,所有引入的jar的starters都会被自动注入。这个类的设计就是为starter工作的。@RestController这个注解专门用于写RESTful的接口的,里面集成了@Controller和@ResponseBody注解。 @ResponseBody 这个注解会自动利用默认的Jackson将return的对象序原创 2017-08-30 10:44:07 · 4808 阅读 · 1 评论 -
Spring的bean的生命周期
接触Spring时间越久,越觉得其设计思想对我们开发的影响之深,最近在开发项目时,组里一个师兄的项目设计就和Spring的bean生命周期设计有很多不谋而合之处,接着对项目理解,回顾了一下Spring的bean的生命周期。本文基于ApplicationContext中的bean的生命周期为例。生命周期流程图Spring bean的生命周期从创建Spring容器开始到Spring的容器销毁bean。最原创 2017-09-15 19:38:36 · 655 阅读 · 0 评论 -
Spring的classpath和classpath*的区别
这一点很容易混淆,这里做一个记录:使用classpath作为前缀:比如当我使用 “classpath:mybean.xml” 表示在classpathz中装载资源mybean.xml.使用classpath*:前缀:比如使用”classpath*:mybatis/*mapper.xml” 会在classpathz中装载所有符合正则通配符的资源文件。原创 2017-09-16 00:25:00 · 735 阅读 · 0 评论 -
Spring-bean的循环依赖以及解决方式
本文主要是分析Spring bean的循环依赖,以及Spring的解决方式。 通过这种解决方式,我们可以应用在我们实际开发项目中。 什么是循环依赖? 怎么检测循环依赖 Spring怎么解决循环依赖 Spring对于循环依赖无法解决的场景 Spring解决循环依赖的方式我们能够学到什么? 1. 什么是循环依赖?循环依赖其实就是循环引用,也就是两个或则两个以上的be原创 2017-09-12 08:18:21 · 177356 阅读 · 89 评论 -
Spring中事务的实现原理
背景:最近的项目中需要用到Spring的事务管理相关的知识,以前也了解过Spring的事务管理,但是仅仅止步于会用,这一次借着这次机会,深入源码分析一下Spring是如何实现事务的。前面已经有一篇文章讲过了如何在Spring中使用声明式事务,并对一些特性进行了讲解,具体如下:Spring事务管理-使用基础这一篇文章从SpringBoot启动出发,到Spring实现事务管理,从源码角度,分原创 2017-09-27 23:35:04 · 26404 阅读 · 3 评论 -
Spring-cache的抽象
背景前面已经分析了SpringBoot的一套starter和autoconfigure 的机制,具体参考:http://blog.csdn.net/u010853261/article/details/77961716 这篇博客。其实对于SpringBoot的starter机制,其实就是依据SpringBoot的约定大于配置的思想,启动SpringBoot时候,根据依赖的starter,就已经自动装原创 2017-09-21 17:41:11 · 662 阅读 · 0 评论 -
Spring事务管理-使用基础
Spring提供的事物管理有两种:编程式事物(使用TransactionTemplate,粒度控制在代码块,手动提交)声明式事务(XML、注解, 粒度只能控制在public方法) 事务管理是基于数据源的,也就是说mybatis引用的数据源必须和DataSourceTransactionManager引用的数据源一致。这样事务管理才能生效。Spring 事务特性。Spring所有的事务管理策略原创 2017-09-13 11:50:32 · 2120 阅读 · 1 评论 -
Spring4-@Enable** 注解的实现原理
背景在前面的工作中使用SpringBoot的时候,我碰到了很多的使用@Enable***注解的地方,使用上也都是加在@Configuration 类注解的类上面,比如: (1)@EnableAutoConfiguration 开启自动扫描装配Bean(2)@EnableScheduling 开启计划任务的支持(3)@EnableTransactionManagement 开启注解式事务的支持。原创 2017-09-30 08:54:59 · 2048 阅读 · 0 评论 -
Spring的Aware
背景Spring 容器的IOC最大优势就是我们的应用程序对容器是无感的,保持绝对的耦合,唯一的关联点就是注解。 但是我们在开发应用程序的时候又不可避免的需要用到Spring容器的所提供的资源,这时候Application就必须能够意识到Spring容器提供的各个机制的存在,这就是Spring Aware。使用了Aware之后,Application就和Spring耦合了,但是我觉得这也不是什么问题,原创 2017-10-02 10:39:15 · 418 阅读 · 0 评论 -
Spring 多线程与异步编程
背景Spring是通过任务执行器(TaskExecutor)来实现多线程和并发编程的,Spring使用ThreadPoolTaskExecutor可实现一个基于线程池的TaskExecutor,在实际开发中,现在的多线程都是异步非阻塞的,所以我们在配置类中需要加上@EnableAsync注解,开启对异步任务的支持,并通过在实际执行的Bean的方法中使用@Async注解来声明其是一个异步任务。使用实例原创 2017-10-02 16:12:35 · 5114 阅读 · 1 评论 -
Spring的AOP使用实例
本文主要通过一些实例,一步步逐渐完善一个AOP的例子: 1.简单的AOP日志实现-某方法之前的前后记录日志; 2.简单的AOP日志实现-需要记录方法的运行时间; 3.简单的AOP日志实现-增加检查订单功能;以上这些例子的AOP相关的配置均使用XML配置实现,bean的配置均使用Java代码实现,稍后会给出AOP注解配置的实现方案。1.某方法之前的前后记录日志(1)entity蛋糕原创 2017-01-24 14:53:23 · 12140 阅读 · 0 评论 -
Spring基于Java注解的配置
前面已经讲了自动扫包配置和基于XML的配置,这一节讲基于Java的配置(1)entity 厨师类,增加了唯一idpackage spring.ch2.topic8;import org.springframework.beans.factory.annotation.Value;/** * Created by louyuting on 17/1/23. */public class Chi原创 2017-01-23 20:33:39 · 1318 阅读 · 0 评论 -
Spring的AOP-面向切面编程
这篇文章主要是讲述:什么是Spring中的AOP面向切面编程,以及为什么要使用AOP。1. 什么是AOPAOP(百度百科):AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。比如我们最常见的就是日志记录了,举个例子,我们现在提供一个登录的服务,但是我们希望记录有谁登录过系统了并且记录下详细的信息。如果按照传原创 2017-01-21 15:36:58 · 322 阅读 · 0 评论 -
Spring的《XML显式装配bean》之通过构造器注入Bean
本文主要讲解两点: 1.怎么样声明一个bean 2.通过构造器注入bean1. 怎么样声明一个bean?1) 创建一个类:package spring.ch1.topic5;public class Song { private String name; public Song(String name) { this.name = name; }原创 2017-01-21 16:10:07 · 1466 阅读 · 0 评论 -
Spring的《XML显式装配bean》之设置bean的作用域
这一节主要是关于bean的作用域。bean的作用域bean的作用域有如下几种:singleton: 单例prototype: 任意次创建request: 每次请求创建一个,仅在web里面有效session:每个session创建一个,仅在web里面有效global-session:在全局session里面,每个bean一个实例上面的几个作用域中我们一般使用的是singleton和pro原创 2017-01-21 21:52:47 · 315 阅读 · 0 评论 -
Spring的《XML显式装配bean》之Bean的创建与销毁操作
这一节主要介绍bean的创建和销毁过程在xml的配置里面,我们可以配置Bean的创建与销毁操作。(1)厨师类Chief,里面增加了create()和destroy() 方法。package spring.ch1.topic6;/** * Created by louyuting on 17/1/20. */public class Chief { private final int原创 2017-01-21 22:11:53 · 364 阅读 · 0 评论 -
Spring的《XML显式装配bean》之通过属性property注入bean
这篇blog主要是介绍两点: 1. 怎样通过属性向对象注入值? 2. 怎样通过属性向对象注入另一个对象的引用?这里的给对象注入值不是通过构造器注入,而是通过setter方法直接给对象的属性注入值。1.怎样通过属性向对象注入值?(1)蛋糕类Cake:这一个领域类我们只需要一个Cake就够了,但是我们在里面会加上名称(name)和大小(size)这两个属性,然后我们通过spring来帮我们原创 2017-01-21 22:43:20 · 7466 阅读 · 0 评论 -
Spring的《XML显式装配bean》-利用AOP记录日志?
这篇blog主要是介绍利用AOP 记录日志信息,以用户登录为例(1)domain User类:用户这里我们比较简单,只记录id和namepackage spring.ch1.topic8;/** * Created by louyuting on 17/1/20. */public class User { private String name = ""; private原创 2017-01-21 23:30:49 · 306 阅读 · 0 评论 -
Spring的《XML显式装配bean》- 注入List或则set
这一节主要讲解spring注入list或则set类型的属性本blog举的例子是:不同的厨师使用不同个烤炉制作出不同的蛋糕。(1)domain 蛋糕类:package spring.ch1.topic11;/** * Created by louyuting on 17/1/20. * 注入属性,记得属性必须要写setter方法 不然就会抛出异常,注入失败. * 蛋糕类 */publi原创 2017-01-21 23:51:50 · 4126 阅读 · 0 评论 -
Spring的《XML显式装配bean》- 注入Map
这一篇blog主要是介绍向bean中注入map类型的属性(1)entity 烤炉类:基本没有变化package spring.ch1.topic12;/** * Created by louyuting on 17/1/21 * 烤炉类 */public class Oven { private String name = ""; @Override public原创 2017-01-22 13:04:47 · 4190 阅读 · 0 评论 -
Spring的《XML显式装配bean》- XML自动装配
这一篇blog主要介绍通过xml配置自动装配,主要包括以下内容: 1. 自动装配的第一种方式-byName 2. 自动装配的第二种方式-byType 3. 自动装配的第三种方式-constructor对于每种方式的介绍均以例子来说明:1.自动装配的第一种方式-byName(1)entity 蛋糕类:这里只保留了name属性。package spring.ch2.topic1;/原创 2017-01-22 19:43:53 · 655 阅读 · 0 评论 -
Spring的《XML显式装配bean》- 默认自动装配
这一blog主要介绍如何在XML中配置默认的自动装配机制前面两节讲自动装配都是在单独的bean中配置,默认自动装配则是设置在beans 标签里面,表示当前xml默认的自动装配原则:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:co原创 2017-01-22 20:03:24 · 689 阅读 · 0 评论 -
Spring的《注解装配》- @autowired
这篇博客主要介绍通过@autowired 注解来装配bean,包括以下内容: 1. 通过属性域注入 2. 通过set方法或则其他方法注入 3. 通过构造器方法注入 4. @autowired 的required属性 5. @autowired 的限定器@Qualifier1. 通过属性域注入下面通过一个实例来说明@autowired 注解实现属性域注入: (1)en原创 2017-01-23 14:22:49 · 552 阅读 · 0 评论 -
Spring-基于java的标准注解装配-@Inject和@Named与@autowired和@ Qualifier区别
本节主要包括以下内容: 1. @Inject注解通过属性域注入 2. @Inject注解通过set方法或则其他方法注入 3. @Inject注解通过构造器方法注入 4. @Named注解我研究了一下,发现了@Inject注解和@autowired注解几乎是一样的,只有一个不同点,使用上一模一样。所以我就不做例子了,可以直接参考@autowired 的使用。下面列出一下原创 2017-01-23 14:44:52 · 5575 阅读 · 0 评论 -
Spring注解中使用表达式@Value
blog主要包括两点内容: 1.注入普通值。1.使用@Value注解注入普通值(1)entity 厨师类:package spring.ch2.topic6;import org.springframework.beans.factory.annotation.Value;/** * Created by louyuting on 17/1/22. */public class Ch原创 2017-01-23 15:18:06 · 4457 阅读 · 1 评论 -
Spring之装配bean的方式
Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系。Spring提供了三种装配bean的方式: 1、在XML中进行显式的配置2、在Java中进行显式的配置3、隐式的bean发现机制和自动装配。下面3篇博文分别介绍着三种方式装配bean自动化装配bean原创 2017-01-17 01:00:38 · 620 阅读 · 2 评论 -
Spring自动检测并装配bean
自动化装配beanSpring从两个角度来实现自动化装配: 1. 组件扫描(component scanning):spring会自动发现应用上下文中所创建的bean。 2. 自动装配(autowiring):spring自动满足bean之间的依赖。组件扫描和自动化装配组合在一起就能发挥出强大作用,能做到将显示配置做到最少。1.自动扫描bean(1)entity 厨师类:package s原创 2017-01-23 16:43:40 · 696 阅读 · 0 评论 -
Spring 计划任务 Schedule
背景我们经常会碰到一些需要执行定时任务的场景,在SpringBoot中实现非常的简单,我们首先通过在配置类注解@EnableScheduling来开启计划任务的支持,然后在要执行计划任务的方法上注解@Scheduled来声明这是一个计划任务。实例计划任务执行类@Servicepublic class ScheduledService { private static final Simple原创 2017-10-02 17:00:01 · 1057 阅读 · 0 评论