Java_Spring(34)

1、什么是Spring
  • 轻量级、非入侵、一站式、模块化的JavaEE开发框架;
  • 核心思想是控制反转和面向切面编程;
2、Spring设计目标、设计理念、设计核心
  • 设计目标:一站式、模块化的JavaEE开发框架;
  • 设计理念:通过IOC容器实现对象解耦,依赖反转;
  • 设计核心:IOC与AOP;
3、Spring优点
  • 简化:对繁琐的API进行了进一步封装;
  • IOC:实现对象解耦,对象由容器来统一管理;
  • AOP:动态代理方式实现进一步增强;
  • 轻量:对其功能可以选择性使用;
  • 支持事务管理;
4、Spring应用场景
  • ssh;
  • ssm;
5、Spring组成
  • AOP:提供面向切面编程实现;
  • DAO:JDBC封装,简化数据访问异常处理,统一管理JDBC事务;
  • MVC:提供MVC实现;
  • WEB:针对web开发集成;
  • ORM:对象关系,对现有ORM框架支持;
  • CORE:核心类库;
  • CONTEXT:提供对象访问方式;
6、什么是控制反转
  • IOC是一种设计思想;
  • IOC控制反转是管理对象依赖关系的容器,实现对象解耦;
  • 对象由Spring容器创建,程序变成对象的接受者;
  • 托管了整个类的生命周期;
7、什么是依赖注入
  • DI是一种设计模式;
  • DI依赖注入是采用构造器或set方式建立与对象之前的关系,实现控制反转;
8、IOC创建对象方式
  • 调用无参构造(默认)
  • 调用有参构造:(下标赋值、类型赋值、参数名赋值)
  • 工厂创建
9、IOC注入方式
  • 构造器注入:调用类的构造方法
  • setter注入:调用类的set方法(注入各种类型list、map、对象、常量、数组、等)
  • 接口注入:spring4开启已废弃
10、构造器注入和set注入区别
  • 构造器注入所有注入都被初始化,不会覆盖setter方法,任意修改都会创建一个实例;
  • setter注入可以部分注入,会覆盖setter方法,任意修改都会不创建一个实例;
11、依赖注入和工厂模式不同
  • 依赖注入不关心怎么获取类,工厂模式需要工厂来获取类;
12、Spring常见配置
  • alias为bean设置别名,bean设置java对象,import配置合并;
13、Spring装配方式
  • xml装配;
  • java注解装配;
  • 隐式的自动装配;
14、xml装配方式的5种模式
  • no:默认情况下不自动装配;
  • byName:名称装配,需要有set方法;
  • byType:根据类型,要保证类型不重复;
  • constructor:构造方法注入,类似于byType方式;
  • default:默认采用上一级的标签的自动装配取值;
15、Spring常用注解
  • @Compent:标准Spring Bean类;
  • @Reposity:标准DAO组件;
  • @Service:标注业务逻辑组件;
  • @Controller:标准控制器组件;
  • @Resource:注入组件;
  • @Scope:作用域
16、@Autowried装配bean过程是怎样的
  • 使用该注解之前需要在配置文件中配置context:annotation-config标签,在启动IOC时,如果容器扫描到该注解,就会自动查找bean,并装配属性。
  • 查找时如果只有一个,进行装配,如果多个,就会抛出异常。此时可以结合@Qualifier注解根据名称查找,如果找不到抛出异常;
  • 可配置@Autowried注解的required属性为false来运行装配空对象;
17、@Resource 、@Autowried、@Qualifier区别
  • @Resource通过名称装配,可以指定name;
  • @Autowried通过类型装配,设置required=full允许对象为空;
  • @Autowried结合@Qualifier实现名称装配;
18、AOP及其原理
  • 面向切面编程;
  • 采用动态代理方式在运行期间植入增强功能代码;
  • 可用于权限认证、日志、事务处理等;
19、Spring AOP与AspectJ AOP区别
  • AspectJ AOP:静态代理的增强,在编译时候生成AOP代理类,并植入到Java字节码中,运行时就是增强之后的AOP对象;
  • Spring AOP:不会修改Java字节码,每次运行时在内存中临时生成一个AOP对象,这个对象包含目标对象的全部方法,在特定切点做增强处理,并回调原对象方法;
20、解释一下AOP的名词
  • 横切关注点:跨越应用程序多个模块的方法或功能。

  • 切面(ASPECT):横切关注点 被模块化 的特殊对象,它是一个类。

  • 通知(Advice):切面必须要完成的工作。它是类中的一个方法。

  • 目标(Target):被通知对象。

  • 代理(Proxy):向目标对象应用通知之后创建的对象。

  • 切入点(PointCut):切面通知 执行的 “地点”的定义。

  • 连接点(JointPoint):与切入点匹配的执行点

21、Spring常用AOP注解与横切逻辑Advice(通知类型)
  • @Aspect:定义切面;
  • @pointcut:定义切点;
  • @Before(前置通知):方法前执行;
  • @After(后置通知):方法后执行;
  • @Around(环绕通知):方法前后执行;
  • @AfterThrowing(异常通知):抛出异常时;
  • @AfterReturning(返回通知):方法正常执行后;
22、什么是SpringBeans
  • 指被Spring容器装配和管理的java对象;
23、Spring中bean有哪些作用域
  • 单例singleton:只允许有一个实例对象;
  • 原型prototype:允许多个实例对象;
  • request:每次http请求都会创建一个实例对象;
  • session:每个http的session中都有一个实例对象;
24、bean是线程安全的吗
  • Spring中默认bean是单例的,单例bean是线程不安全的;
25、如何解决线程安全(线程并发问题)
  • 将作用域改为prototype,或者采用ThreadLocal解决线程安全;
26、bean的生命周期
  • 实例化
  • 属性赋值(依赖注入)
  • 初始化
  • 销毁
27、BeanFactoty与ApplicationContext区别
  • ApplicationContext是BeanFactoty子接口;
  • BeanFactoty采用延迟加载,第一次getBean时才会初始化Bean;
  • ApplicationContext是BeanFactoty的扩展,开发中尽量使用它;
28、简述事务及其特性

事务是一些列操作组成的最小单元;

  • 原子性:内部操作要么全部成功,要么全部失败;
  • 一致性:执行前后的数据结构要保持一致;
  • 持久性:执行结果需要持久化保存;
  • 隔离性:各个事务之间运行时隔离开来的;
29、什么是事务传播
  • 指多个事务方法互相调用,事务如何在这些方法中传播;
30、介绍一下Spring事务管理与优点
  • Spring事务本质是对数据库对事务支持;
  • Spring为不同事务提供了统一的编程模型;
  • 一般使用TarnsactionManager进行管理,可以通过Spring注解完成;
  • 提供编程式(代码编码)和声明式事务(xml或注解声明)管理;
31、Spring事务隔离级别
  • isolation_default:默认级别;
  • isolation_read_uncommitted:允许另一个事务看到未提交数据,可能出现脏读、幻读、不可重复读;
  • isolation_read_committed:提交后才能被看到,可能出现幻读、不可重复读;
  • isolation_repeatable_read:可能出现幻读;
  • isolation_serializable:最可靠,代价最高。避免所有事务问题;
32、spring事务传播特性
  • propagation_requierd:如果当前没有事务,就新建一个事务,如果已存在一个事务中,加入到这个事务中。

  • propagation_supports:支持当前事务,如果没有当前事务,就以非事务方法执行。

  • propagation_mandatory:使用当前事务,如果没有当前事务,就抛出异常。

  • propagation_required_new:新建事务,如果当前存在事务,把当前事务挂起。

  • propagation_not_supported:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

  • propagation_never:以非事务方式执行操作,如果当前事务存在则抛出异常。

  • propagation_nested:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与propagation_required类似的操作。

33、Spring用到了那些设计模式
  • 代理模式:AOP
  • 单例模式:bean定义默认为单例
  • 工厂模式:BeanFactory创建对象实例
  • 适配器模式:AOP增强或通知
34、Spring里的applicationContext.xml文件能不能改成其他文件名
  • 可以
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值