面经之Spring

1、什么是spring?

​ spring是一个轻量级的控制反转和切面编程的容器框架,他的出现解决了企业开发的复杂的代码问题,现在不止用于企业开发,他有强大的社区资源

2、spring的两大核心概念(Bean和AOP):
  • 控制反转(IOC):通过反射技术去动态创建对象,让对象的创建不在依赖于new,spring运行之后通过xml文件去动态去创建对象以及调用对象里面的方法
  • 切面编程(AOP):这是一种程序设计规范,它可以分离业务代码和关注点代码(重复代码),
3、spring的设计目标和设计理念

它的最终目的是简化java的开发, 而且是全方位的简化Java的开发,为了降低Java开发的复杂性,提供了4个策略:

  • 基于POJO轻量级和最小侵入编程
  • 通过依赖注入和面向接口实现松耦合
  • 基于切面和惯性进行编程
  • 基于样板和减少样板的代码编程
4、spring框架的优缺点?
优点:
  • 进行了非侵入式设计:降低了应用程序代码对框架的依赖性
  • 方便解耦和简化开发
  • 支持AOP:它允许一些通用的任务,如事务、安全日志等集中进行处理,提高程序的复用性
  • 支持生明式事务:只需要通过配置就能够完成对事务的管理
  • 方便集成各种框架,如struts、mybatis等框架
缺点:
  • spring是一个轻量级的框架,但是却给人一个什么都能的感觉
  • spring很依赖反射原理,而反射能够影响性能
  • spring的使用门槛高,入门时间长
5、spring有哪些场景?

JavaEE企业应用开发,包括SSM、SSH框架

6、spring有哪些模块组成

​ 1、核心容器(Spring Core):它提供了Spring的基础功能

​ 2、SpringAOP(切面编程):提供切面支持,是轻量级容器

​ 3、应用上下文(Spring context):实现了Applictioncontext接口,提供了一些核心容器、事件处理等的功能

​ 4、JDBC和AO模块(Spring DAO):提供JDBC和DAO还有事务的支持

​ 5、对象实体映射(spring ORM):是spring提供了若干个ORM映射框架,提供对象映射的关系的工具

​ 6、Web模块(Spring Web):扩张Spring的上下文,为Web的应用上下文提供支持

​ 7、MVC模块(SpringWebMVC):MVC框架是一个全功能构建Web应用程序的MVC实现,

7、Spring框架里面应用到哪些设计模式?
  • 简单工厂模式:

    • BeanFactory,spring里面的BeanFactory就是简单工厂实现的,实质就是由工厂类来决定创建哪一个产品类,
    • 设计意义:达到松耦合和Bean的额外处理
  • 工厂方法:

    • 实现方式:FactoryBean
    • 典型例子:spring和mybatis的结合
  • 单例设计模式

    • spring的依赖注入就是单例
  • 适配器模式

    • 实现方式:springMVC中的适配器HandlerAdatper
    • 实现原理:HandlerAdatper根据Handler的规则去执行不同的Handler
  • 装饰器模式

  • 代理模式

    • 实现方式:AOP的底层就是代理模式,
  • 观察者模式

    • 实现方式:spring的事件驱动就是观察者模式,
    • 具体实现:事件机制的实现三大部分:事件源、事件、事件监听器
  • 策略模式

    实现方式:spring框架资源访问Resource接口

  • 模板方法

    • 经典的定义:父类定义骨架,某些子类进行特定方法的实现
8、什么是Spring的IOC容器?
  • SpringIOC就是创建对象、管理对象(通过依赖注入(DI))、装配对象、配置对象,并且管理这些对象的这个生命周期
  • 什么是IOC:Inversion Of Cerontrol (控制反转),是一种思想,它将你设计好的对象交给容器进行控制,而不是进行传统的进行对象控制,对于Spring框架来说,就是对对象的生命周期和对象之间的关系进行控制。
  • Ioc的优点:
    • Ioc和依赖注入把代码量给降到最低
    • 它进行测试的时候很容易
    • 通过最少的代码和最小的侵入性进行了松耦合
    • Ioc容器支持加载服务时候饿汉式初始化和懒加载
9、SpringIOC支持那些功能?
  • 依赖注入
  • 自动装配
  • 依赖检查
  • 支持集合
  • 指定初始化方法和销毁方法
  • 支持某些方法回调
10、spring的两大核心容器是什么?
  • BeanFactory
  • AppliactionContext
11、Spring的两大核心容器的区别?
  • BeanFactory:创建BeanFactory时候,需要提供Spring管理容器的详细信息
  • Applicationontext:创建ApplicationConext时候,只需要指定配置文件的名称和位置,Spring会去类路径里面寻找ApplicationContext.xml的配置文件
12、Spring的依赖注入是什么?

spring依赖注入就是在创建对象的时候,通过依赖对象进行注入,这样可以降低代码之间的耦合性

  • 依赖注入的方式:
    • set方法注入:需要为注入的变量提供set’方法
  • t通过构造方法注入:
    • Bean对象需要提供有参的构造方法
  • 自动注入
    • 这个分为两种,
      • 全局配置注入
      • 局部配置注入
13、Spring依赖注入的原则
  • 开闭原则:

    • 定义:应用本身就是可以扩展的,而是不可修改的,也就是对扩展开放,对修改关闭
    • 优点:
      • 易扩展:它的开闭原则就是对扩展开发
      • 已维护:因为它的开闭原则,对于源代码的修改进行关闭,这就减少修改代码的可能,也就提高维护性
  • 高内聚,低耦合

    • 相关度比较高的集中,相关的两个模块尽量减少代码之间的联系,降低他们之间的耦合性
14、什么是Spring里面的Bean?
  • 定义:就是Spring里面的SpringIoc容器管理的对象就是Bean
15、spring有几种配置方式

有三种配置方式

  • 通过XML文件进行配置
    • spring框架里面常用的方式,也是人们常用的
  • 通过注解进行配置
    • 注解进行配置是spring2.5之后才有的,它的出现就是简化xml文件进行配置的,所以是结合xml文件配置的
  • 通过Java进行配置
    • Java进行配置是在spring3.0之后有的,
16、spring里面的各种注解
  • 包扫描+组件标注注解
    • @Component:泛指各种组件
    • @Controller、@Service、@Repository都可以称为@Component
    • @Controller:控制层
    • @Service:业务层
    • @Repository:数据访问层
  • Bean:导入第三方包里面的注解
  • 注入Bean的注解
    • @Autowired:由Bean提供
    • @Resource:
    • @Configuration:声明当前类为配置类
  • 切面相关的注解
    • @Aspect:声明这是一个切面
    • @After:在方法执行之后执行
    • @Before:在方法执行之前执行
    • @Around:在方法执行之前和之后执行
    • @PointCut:声明切点
  • Value注解:属性注入
  • 环境切换:@Profile
17、spring里面的requestmappig的作用

作用:就是将请求和请求的控制器给串联起来

这个注解是标识位置的,value的属性,method属性

这个注解使用在类上面的时候,表示这个类的访问就是 取消代码里面的RepuestMapping注释

18、spring框架里面如何更加有效的使用JDBC?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个胖小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值