1 .Spring
框架是一个什么框架?
Spring
是一个资源整合框架,其核心是资源整合,然后以一种更加科学的方式对外提供服
务,例如提高对象的应用效率,降低系统开销,提高代码的可维护性等等。其官方网址为
spring.io.
2 .Spring
框架中有哪些重要的模块?
Spring IOC
,
Spring AOP,Spring WEB,Spring Data
等
3 .Spring
框架是如何构建对象?
Spring
框架中所有
Bean
对象都是通过
BeanFactory
接口类型的工厂对象构建的,此工厂
底层会基于
Java
中的反射技术进行实现,首先获取类的字节码对象,然后基于字节码对象
获取构造方法对象,最后基于构造方法对象构建类的实例对象。
4 .
如何理解
spring
中
IOC
设计?
IOC
是一种设计思想,我们称之为控制反转,本质上讲解的是对象控制权问题。基于这种设
计可以让初学者将对象的控制权转交给第三方,由第三方专业团队管理和应用对象。这样可
以更好的避免对象的非正确使用方式,进而更好改善对象在内存中的科学应用。这个
IOC
设
计从生活的角度可以理解为由股票操盘手负责帮你进行资金管理,由父母包办你的婚姻。再
简单总结一下的话,
IOC
可以理解为饭来张口、衣来伸手。(可以让初级程序坐享其成,因
为初级程序员写的程序规范性不够,资源应用方式不够科学)
5 .
为什么要将对象交给
spring
管理?
Spring
为我们的对象赋予了很多个更加科学的特性
,
例如延迟加载(@Lazy)
,
作用域 (@Scope),生命周期方法
(@PostConstruct/@PreDestory)
以及运行时的自动依赖注入 DI(降低耦合
,
提高程序的可维护性
)
机制等,基于这些特性可以更好的提高对象的应用性能 以及程序的可扩展性。
DI(
依赖注入
-
兵马未动粮草先行
)
,依赖注入之前首先需要依赖查找(
DL
)
-
按类型、名字
6 .Spring
框架中的
Bean
有什么特性?
Spring
框架为了更加科学的管理和应用
Bean
对象,为其设计相关特性,例如:懒加
载
(@Lazy)
、作用域
(@Scope)
以及生命周期方法。
7 .Spring
中用于定义
Bean
生命周期方法的注解?
1) @PostConstruct
2) @PreDestroy
8 .Spring
中用于实现依赖注入的注解?
1) @Autowired
(描述属性,构造方法,
set
方法,其它),默认优先按类型查找
2) @Resource
(描述属性,构造方法,
set
方法),默认优先按名称进行查找。
9 .@Autowired
注解有什么作用?
@Autowired
由
spring
框架定义,用于描述类中属性或相关方法
(
例如构造方法
)
。
Spring
框架在项目运行时假如发现由他管理的
Bean
对象中有使用
@Autowired
注解描述的属性或
方法,可以按照指定规则为属性赋值
(DI)
。其基本规则是:首先要检测容器中是否有与属性
或方法参数类型相匹配的对象,假如有并且只有一个则直接注入。其次,假如检测到有多个,
还会按照
@Autowired
描述的属性或方法参数名查找是否有名字匹配的对象,有则直接注入,
没有则抛出异常。最后,假如我们有明确要求,必须要注入类型为指定类型,名字为指定名
字的对象还可以使用
@Qualifier
注解对其属性或参数进行描述
(
此注解必须配合
@Autowired
注解使用
)
。
10 .
@Qualifier
注解的作用?
@Qualifier
注解用于描述属性或方法参数,当有多个相同类型的
bean 却只有一个需要自
动装配时,将
@Qualifier
注解和
@Autowire
注解结合使用以消除这种混淆,指定需要装
配的确切的
bean
。
11 .@Component
和
@Configuration
注解的异同点?
@Component
注解通常用于描述一般
bean
对象,比如具备一定通用性的对象。
@Configuration
注解通常用于描述
spring
工程中的配置类,是一个增强版的
@Component
注解,在配置类中定义一些由
@Bean
注解描述的方法,然后通过这些方法对一
些自己定义或第三方的
Bean
进行对象的创建和初始化。当我们使用这
@Configuration
注
解描述一个配置类时,
Spring
框架底层会为这个
@Configuration
注解描述的配置类创建
一个
CGLIB
代理对象,然后由代理对象调用
@Bean
注解描述的方法,同时底层会检测方法
返回的
Bean
是否已创建,假如已创建则不再创建。使用
@Component
注解描述类时,系统
底层并不会为此类创建代理对象,只是创建当前类的对象,然后调用
@Bean
注解描述的方法,
创建和初始化
Bean
,方法每调用一次就会创建一个新的对象。
12 .
Spring
中用于定义组件的注解?
1) @Component
2) @Service
3) @Controller
4) @Configuration
5) @Repository
6) @Bean
13 .
Spring MVC
中描述方法的注解?
1) @RequestMapping
2) @PostMapping
3) @GetMapping
4) @DeleteMapping
5) @PutMapping
6) @PatchMapping
7) @ResponseBody
14 .如何理解
Spring
中的
AOP
设计?
AOP
(
Aspect Orient Programming
)是一种设计思想,是软件设计领域中的面向切面编
程,它是面向对象编程
(OOP)
的一种补充和完善。实际项目中我们通常将面向对象理解为一
个静态过程
(
例如一个系统有多少个模块,一个模块有哪些对象,对象有哪些属性
)
,面向切
面理解为一个动态过程(在对象运行时动态织入一些扩展功能或控制对象执行)
15 .Spring AOP
的应用场景有哪些?
1)
日志记录
2)
事务控制
3)
权限控制
4)
缓存应用
5)
异步操作
6)
限流熔断