Spring总结

1. 什么是spring?

  Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。

 Spring的核心是控制反转(IoC)和面向切面(AOP)简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。

2. 使用Spring框架的好处是什么?

  • 轻量:Spring 是轻量的,基本的版本大约2MB。
  • 方便解耦,简化开发 (高内聚低耦合) Spring就是一个大工厂(容器),可以将所有对象创建和依赖关系维护,交给Spring管理 spring工厂是用于生成bean
  • 控制反转(IOC)Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。
  • 面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开,可以方便的实现对程序进行权限拦截、运行监控等功能。
  • 容器:Spring 包含并管理应用中对象的生命周期和配置。
  • MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。
  • 事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。
  • 异常处理:Spring 提供方便的API把具体技术相关的异常(比如由JDBC,Hibernate or JDO抛出的)转化为一致的unchecked 异常。

 


依赖注入和控制反转

spring认为,java的编写更加的偏向底层,对于企业应用程序比较薄弱。尽管java提供了丰富的应用功能,但是缺乏架构师和开发人员将java中诸多基础模块,组成一个连贯的整体。尽管你可以使用诸多的设计模式来完善你的项目。

但是spring的框架IOC组件,通过提供不同的组成成分为准备使用一个完全工作的应用程序手段解决这个问题,spring编写完善的设计模式可以集成到自己的项目中。很多组织和机构使用spring框架,来健壮自己的应用。

核心容器

包含:spring-core,spring-beans,spring-context,spring-context-support,spring-expression。 
spring-core,spring-beans提供spring的基础部分。包含IOC的依赖注入,BeanFactory是一个实现了复杂工厂模式。允许你从程序逻辑分离出依赖关系的配置。 
spring-context是spring的上下文环境。事件程序,加载资源都是由上下文加载并创建上下文。 
spring-expression提供了一个强大的表达式语言。

DI和AOP

spring最核心的两个部分一个是DI(依赖注入)一个是AOP(面向切面编程)。

对于DI,自己理解的就是spring这个容器中,替你管理着一系列的类,前提是你需要将这些类交给spring容器进行管理,然后在你需要的时候,不是自己去定义,而是直接向spring容器索取,当spring容器知道你的需求之后,就会去它所管理的组件中进行查找,然后直接给你所需要的组件,所以,对于spring容器,离不开配置文件。

AOP ,面向切面编程,我所简单的理解就是 在一个工作流程之中,在某一个点,在有些时候,我们需要执行一些特殊的代码处理,但是这种情况是有时有,有时没有,如果我们将代码写入到工作流中,则没有办法控制,什么时候有,什么时候没有,于是,我们就想办法将我们的这个代码给整理出来,然后利用配置文件,将这个代码,在某些特定时刻进行执行。就好比,如果我们需要处理,我们就在这个工作流中切出一个面,然后植入我们的代码,进行执行。就好比一个流水线工作,我们在我们需要的地方切了一刀,然后植入我们的代码,然后进行工作。

Spring切面可以应用五种类型的通知:

  • before:前置通知,在一个方法执行前被调用。
  • after:  后置通知,在方法执行之后调用的通知,无论方法执行是否成功。
  • after-returning: 仅当方法成功完成后执行的通知。
  • after-throwing: 在方法抛出异常退出时执行的通知。
  • around: 在方法执行之前和之后调用的通知,环绕通知(等价于前置+后置通知)。

 

配置文件

spring可以说是最核心的东西就是配置文件,但是现在又有一种是基于注解的方式,那种方式更简单灵活,建议使用注解方式。 
spring配置文件主要是配置bean 
spring配置文件也可以用来引入外部文件 
在引入外部文件时,我们需要引入命名空间【context】。

Bean相关

在Spring的配置文件中,我们最多的就是配置bean,就是我们所说的类,也就是组件。 
1、配置bean组件,即我们所说的类,有三种方式属性注入,构造器注入,工厂方法注入第三种当时可以忘记,最主要的就是属性注入和构造器注入。 
2、bean与bean之间的交互则是利用ref属性进行关联, 
3、要知道对于集合的注入方式,spring给我们内置了一些集合属性,我们就是利用这些来注入我们的集合属性。 
4、对于bean的自动装配问题,我们不建议重新配置使用,有时候用默认的就可以了,我们可以利用bean的autowire属性进行设置是按照name装配还是按照type装配。 
5、对于bean之间的关系有继承和依赖。在继承之中我们还可以设置属性abstract为 true, 这样 Spring 将不会实例化这个 Bean。 【 类比于类与类之间的is a与 has a】 
6、 Bean 的作用域,在 Spring 中, 可以在 【bean】 元素的 scope 属性里设置。有五种形式的scope。分别是【singleton】【prototype 】【request】【session】【global session 】。 
7、bean的生命周期,了解即可,还要知道有后置处理器的bean的生命周期。 
8、bean的配置方式,三种【通过全类名】【通过工厂方法】【通过FactoryBean】

解释Spring支持的几种bean的作用域。

     Spring框架支持以下五种bean的作用域:

  • singleton : bean在每个Spring ioc 容器中只有一个实例。
  • prototype:一个bean的定义可以有多个实例。
  • request:每次http请求都会创建一个bean,该作用域仅在基于web的Spring ApplicationContext情形下有效。
  • session:在一个HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。
  • global-session:在一个全局的HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。

缺省的Spring bean 的作用域是Singleton.

@Required 注解

这个注解表明bean的属性必须在配置的时候设置,通过一个bean定义的显式的属性值或通过自动装配,若@Required注解的bean属性未被设置,容器将抛出BeanInitializationException。

 @Autowired 注解

@Autowired 注解提供了更细粒度的控制,包括在何处以及如何完成自动装配。它的用法和@Required一样,修饰setter方法、构造器、属性或者具有任意名称和/或多个参数的PN方法。

 @Qualifier 注解

当有多个相同类型的bean却只有一个需要自动装配时,将@Qualifier 注解和@Autowire 注解结合使用以消除这种混淆,指定需要装配的确切的bean。

注解方式:

a)@Component 为通用注解 b)@Repository 为持久层组件注解 c)@Service 为业务层组件注解 d)@Controller 为控制层注解 e)@Scope 为Bean的作用域注解 f)@Autowired 为指定Bean之间依赖关系的注解 g)@Inject 为指定Bean之间依赖关系的注解 h)@Value 为注入Spring表达式值的注解 j)@ResponseBody 为Ajax返回类型的注解

Spring支持两种类型的事务管理:

  • 编程式事务管理:这意味你通过编程的方式管理事务,给你带来极大的灵活性,但是难维护。
  • 声明式事务管理:这意味着你可以将业务代码和事务管理分离,你只需用注解和XML配置来管理事务。



原文链接:https://blog.csdn.net/sinat_28978689/article/details/62427595

原文链接:https://blog.csdn.net/a291382932/article/details/52878897

https://www.cnblogs.com/li150dan/p/9523801.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值