dewen 发布的文章

它通过一套注解,让一个简单的Java类成为一个可以处理请求的控制器,而无需实现任何接口。同时,它还支持RESTful编程风格的请求。

Spring是一个“引擎”;

Spring MVC是基于Spring的一个MVC框架 ;

Spring Boot是基于Spring4的条件注册的一套快速开发整合包。

Spring Colud是一种云端分布式架构解决方案,基于Spring Boot,在Spring Boot做较少的配置,便可成为Spring Colud中的一个微服务。

问题描述:
开发中避免不了会对同一个类里面的方法调用,比如有一个类Test,它的一个方法A,A再调用本类的方法B(不论方法B是用public还是private修饰),但方法A没有声明注解事务,而B方法有。则外部调用方法A之后,方法B的事务是不会起作用的。这也是经常犯错误的一个地方。

原因:
那为啥会出现这种情况?其实这还是由于使用Spring AOP代理造成的,因为只有当事务方法被当前类以外的代码调用时,才会由Spring生成的代理对象来管理。

其他场景:
如果Transactional注解应用在非public修饰的方法上,Transactional将会失效。

摘录自:https://www.cnblogs.com/liuyi6/p/10217096.html

bean有三种实例化方式:无参构造、静态工厂、实例工厂

依赖注入:
依赖注入(Dependency Injection)是 spring 框架核心 IoC 的具体实现。依赖指的是bean的属性,包括:简单类型(8种基本类型和String类型)的属性、POJO类型的属性、集合数组类型的属性。我们通过控制反转将实例化对象的交给IoC进行,但创建的对象没有依赖,因而需要Spring维护依赖关系,即依赖注入。

依赖注入的三种方式:

  • 构造方法注入
  • set方法注入
  • p空间名称注入

代理:
为一个目标对象提供一个代理对象,并由代理对象控制对目标对象的引用。使用代理对象。是为了在不修改目标对象的基础上, 增强目标对象的业务逻辑。

静态代理:
为每一个业务增强都提供一个代理类,由代理类来创建代理对象。

动态代理:
静态代理会为每一个业务增强都提供一个代理类,由代理类来创建代理对象,而动态代理并不存在代理类,代理对象直接由代理生成工具动态生成。