【从零开始的面试题-Spring-基础篇】

基础

1.什么是Spring

Spring是一个开源的J2EE应用程序框架,以控制反转(IOC)和面向切面(AOP)为内核,提供了展示层Spring MVC、持久层Spring JDBC以及业务层事务管理等功能。

2.Spring的优点

1.轻量
Spring所需要的jar包都非常小,一般1M以下,几百kb。核心功能所需要的jar包总共3M左右。Spring框架运行占有资源少,运行效率高,不依赖其他jar。
2.IOC和DI支持
IOC是Spring的核心,它是一个大的工厂容器,维护所有对象(bean)的创建和依赖关系。Spring工厂用于生成Bean,并管理Bean的生命周期,实现高内聚低耦合的设计理念。
3.AOP编程的支持
Spring提供了面向切面编程,可以方便实现日志记录、事务管理等切面功能。
4.声明式事务的支持
Spring支持通过配置完成对事务的管理,而不需要通过硬编码方式对业务代码造成侵入。
事务配置有两种方式:在xml配置文件中开启事务或使用注解@Transactional的方式进行配置。
5.快捷测试的支持
Spring对Junit提供支持,可以通过注解快捷测试Spring程序。
6.快速集成功能
Spring可以和各种优秀框架进行集成,如Struts、Hibernate、MyBatis等。

3.Spring的模块

Spring框架是分模块存在的,除了最核⼼的 Spring Core Container 是必要模块之外,其他模块都是可选的。Spring大约分为20个模块。
最主要的七大模块:
1.Spring Core:Spring核心,是框架最基础的部分,提供IOC和依赖注入DI特性。
2.Spring Context:Spring上下文容器,是BeanFacyory功能加强的一个子接口。
3.Spring Web:提供Web应用开发的支持。
4.Spring MVC:针对Web应用中MVC思想的实现。
5.Spring DAO:提供对JDBC抽象层,简化了JDBC编码。
6.Spring ORM:支持用于流行的ORM框架的整合,比如:Spring + MyBatis、Spring + Hibernate等。
7.Spring AOP:面向切面编程,提供了与AOP联盟兼容的编程实现。

4.Spring常用注解

Spring的注解可以分为Web、容器、Aop、事务四个功能模块。

4.1 Web

Web模块的注解即在控制层Controller中使用的注解。
1.@Controller
组合注解(组合了@Component 注解),应⽤在 MVC 层(控制层)。
2.@RestController
组合注解,相当于@Controller 和@ResponseBody 的组合,注解在类上,意味着,该 Controller 的所有⽅法都默认加上了@ResponseBody。
3.@RequestMapping
⽤于映射 Web 请求,包括访问路径和参数。如果是 Restful 风格接⼜,还可以根据请求类型使⽤不同的注解:

  • @GetMapping
  • @PostMapping
  • @PutMapping
  • @DeleteMapping

4.@ResponseBody
⽀持将返回值放在 response 内,⽽不是⼀个页⾯,通常⽤户返回 json 数据。
5.@RequestBody
允许 request 的参数在 request 体中,⽽不是在直接连接在地址后⾯。
6.@PathVariable
⽤于接收路径参数,⽐如 @RequestMapping(“/hello/{name}”) 申明的路径,将注解放在参数前,即可获取该值,通常作为 Restful 的接口实现⽅法。
>!](https://img-blog.csdnimg.cn/5de3c137e0cc49d9b3fc7487827dd42c.png)

4.2 容器

容器模块的注解即在与Bean相关的地方使用的注解。
1.@Component
标注在类上,表示该类是一个“组件”,成为Spring管理的Bean。当使用基于注解的配置和类路径扫描时,这些类被视为自动检测的候选对象。@Component还是一个元注解。
2.@Service
组合注解,组合了@Component,应用在service业务逻辑层。
3.@Repository
组合注解,组合了@Component,应用在dao数据访问层。
4.@Autowired
自动装配注解,标注在属性或setter方法上,向当前Bean中自动注入依赖的属性(Bean)。
5.@Qualifier
该注解与@Autowired一起使用,可帮助配置,⽐如两个以上相同类型的 Bean 时 Spring ⽆法抉择,⽤到此注解。
6.@Configuration
声明当前类是⼀个配置类(相当于⼀个 Spring 配置的 xml ⽂件)。
7.@Value
可⽤在字段,构造器参数跟⽅法参数,指定⼀个默认值,⽀持 #{} 跟 ${} 两个⽅式。⼀般将 SpringbBoot 中的 application.properties 配置的属性值赋值给变量。
8.@Bean
注解在⽅法上,声明当前⽅法的返回值为⼀个 Bean。返回的 Bean 对应的类中可以定义init()⽅法和 destroy()⽅法,然后在 @Bean(initMethod=”init”,destroyMethod=”destroy”) 定义,在构造之后执⾏ init,在销毁之前执⾏ destroy。
9.@Scope
Spring Bean的作用域,定义我们采⽤什么模式去创建 Bean(⽅法上,得有@Bean) 其设置类型包括:Singleton 、Prototype、Request 、 Session、GlobalSession。

4.3 AOP

AOP有关功能的注解,实现面向切面编程。
1.@Aspect
声明一个界面(类上),使⽤@After、@Before、@Around 定义建⾔(advice),可直接将拦截规则(切点)作为参数。

  • @After:在⽅法执⾏之后执⾏(⽅法上)。
  • @Before:在⽅法执⾏之前执⾏(⽅法上)。
  • @Around:在⽅法执⾏之前与之后执⾏(⽅法上)。
  • @PointCut:声明切点 在 java 配置类中使⽤@EnableAspectJAutoProxy 注解开启Spring 对 AspectJ 代理的⽀持。

4.4 事务

@Transactional:在要开启事务的⽅法上使⽤@Transactional 注解,即可声明式开启事务。

5.Spring应用的设计模式

1.工厂模式
Spring容器本质上是一个工厂,使用工厂模式通过BeanFactory、ApplicationContext创建bean对象。
2.代理模式
Spring AOP功能就是通过代理模式实现的,分为动态代理和静态代理。
3.单例模式
Spring中的Bean默认都是单例的,这样有利于容器对Bean的管理。
4.模板模式
Spring中JdbcTemplate、RestTemplate等以Template结尾的对数据库、网络等进行操作的模板类,就使用了模板模式。
5.观察者模式
Spring事件驱动模型使用了观察者模式。
6.适配器模式
Spring AOP的增强或通知(Advice)使用带了适配器模式、Spring MVC中也是用适配器模式适配的Controller。
7.策略模式
Spring中有一个Resource接口,它不同的实现类会根据不同的策略访问资源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值