1.spring是什么
- spring是轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(面向切面编程)为内核提供了展现层SpringMVC和持久层Spring JDBC以及业务层事务管理等众多的企业级应用技术,逐渐成为使用最多的java ee企业应用开源框架
2.spring的优势
- 方便解耦,简化开发
- 通过 Spring 提供的 IoC 容器,可以将对象间的依赖关系交由 Spring 进行控制,避免硬编码所造成的过度程序耦合
- AOP编程的支持
- 通过 Spring 的 AOP 功能,方便进行面向切面的编程,许多不容易用传统 OOP 实现的功能可以通过AOP轻松应对
- 声明式事务的支持
- 通过声明式方式灵活的进行事务的管理,提高开发效率和质量。
- 方便程序的测试
3.spring的注入方法
-
set()注入
-
构造器注入
-
注解注入
@Autowired
3.IOC(控制反转)
- 控制反转就是将创建对象的控制权进行转移,以前创建对象的控制权在程序员自己,而现在这种权利转移到第三方,例如IOC工厂,它是一个专门用来创建对象的工厂(BeanFactory),所有对象由工厂创建,依赖关系此时发生改变,原来的依赖关系消失,它们都依赖IOC容器,而不是彼此依赖
- ioc的一个重点是在系统运行中,动态的向某个对象提供他所需要的对象,这一点是通过DI(Dependency Injection )依赖注入实现。依赖注入是基于反射实现的,反射可以在程序运行过程中动态的生成对象,执行对象的方法
- Spring的IOC有三种注入方式 :构造器注入、setter方法注入、根据注解注入
4.@Controller和@RestController
- @RestController注解相当于@ResponseBody + @Controller合在一起的作用
- 使用@Controller 注解,在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面
- @ResponseBody是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据,使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面
5.spring支持bean的作用域
- singleton:默认,每个容器中只有一个bean的实例
- prototype:每次从容器中调用bean时,都会返回一个新的实例
6.AOP常用注解
7.AOP执行顺序
正常
异常
8.spring循环依赖相关问题
9.什么是循环依赖
10.一个循环依赖的结论
spring三级缓存解决循环依赖
如果主要使用构造函数注入,可能无法解决循环依赖的问题