1.概述SpringBoot工作原理
@Configuration注解这个注解的作用就是声明当前类是一个配置类,然后Spring会自动扫描到添加了@Configuration的类,并且读取其中的配置信息。而@SpringBootConfiguration是来声明当前类是SpringBoot应用的配置类,项目中只能有一个。所以一般我们无需自己添加。
@EnableAutoConfiguration告诉SpringBoot基于你添加的依赖,去猜想你要如何配置Spring。
SpringBoot内部对大量的第三方库或Spring内部库进行了默认配置,这些配置是否生效,取决于我们是否引入了对应库所需的依赖,如果有那么默认配置就会生效。
所以,我们使用SpringBoot构建一个项目,只需要引入所需框架的依赖,配置就可以交给SpringBoot处理了。除非你不希望使用SpringBoot的默认配置,它也提供了自定义配置的入口。
@ComponentScan
配置组件扫描的指令,通过basePackageClasses或者basePackage属性指定扫描的包。如果没有指定这些属性,那么将从声明这个注解的类所在的包开始扫描包及子包
而我们的@SpringBootApplication注解声明的类就是main函数所在的启动类,因此扫描的包是该类所在包及其子包。因此,一般启动类会放在一个比较前的包目录中。
2.Spring、SpringMVC和SpringBoot区别
Spring最重要的特征是依赖注入。所有 SpringModules 不是依赖注入就是 IOC 控制反转。
当我们恰当的使用 DI 或者是 IOC 的时候,我们可以开发松耦合应用。松耦合应用的单元测试可以很容易的进行。
2、Spring MVC
Spring MVC 提供了一种分离式的方法来开发 Web 应用。通过运用像 DispatcherServelet,
MoudlAndView 和 ViewResolver 等一些简单的概念,开发 Web 应用将会变的非常简单。
3、SpringBoot
Spring 和 SpringMVC 的问题在于需要配置大量的参数。Spring Boot 通过一个自动配置和启动的项来目解决这个问题。为了更快的构建产品就绪应用程序, Spring Boot 提供了一些非功能性特征。
3.概述Spring IoC/DI
IoC(Inverse of Control:控制反转)是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由Spring框架来管理。IoC 容器是 Spring 用来实现 IoC 的载体, IoC 容器实际上就是个Map(key,value),Map 中存放的是各种对象。
IoC 容器就像是一个工厂一样,当我们需要创建一个对象的时候,只需要配置好配置文件/注解即可,完全不用考虑对象是如何被创建出来的。
DI 依赖注入就是将实例变量传入到一个对象中去。(Dependency injection means giving an object its instance variables)@Autowired它会根据属性的类型(by type)找到对应对的Bean进行注入
- .@Primary和@Quelifier
@Primary:它是一个修改优先权的注解,比如上面的例子,当我们有猫有狗时,假设这次使用猫,name只需要在猫类的定义上加入@Primary就可以了这里的@Primary的含义告诉SpringIOC容器,当发现有多个同类型的Bean时,请优先使用我
4.概述Spring AOP
AOP全称为Aspect Oriented Programming
即:面向切面编程
AOP的功能简单来说就是将程序中的重复代码抽取出来,在需要执行的时候通过动态代理的方式,在不修改代码的基础上,实现对功能增强,提高程序的可用性,同时也能大大提高开发效率
AOP的作用:在程序运行过程中,在不修改源码的基础上实现功能增强
使用AOP的好处:
减少重复代码
提高开发效率
后期便于维护
5.声明式事务管理的工作原理
使用spring声明式事务首先是配置datasource,这是java sql提供的一个接口(A factory for connections to the physical data source that this DataSource object represents. ),一般会使用c3p0数据库连接池来作为datasource,它实现了datasource接口。然后是配置sessionFactory,将datasource注入进去,由sessionFactory来管理这些连接,代表连接的是session。最后配置事务管理器,管理session