Spring

1、Spring的理解

   Spring解决了业务逻辑和各层之间的耦合问题(比如,IOC、IOP、事务管理),使得开发人员将更多的注意力集中业务逻辑上。

2、Spring IOC与IOP的理解

  IOC:将创建对象交由Spring容器负责,由BeanFactory接口和依赖注入支持。

  依赖注入就是给Bean对象的成员变量赋值。Bean就是组件对象。

  IOP:面向切编程,使用代理增强方法,使得代码达到横向重用的效果。

3、BeanFactory如何加载Bean

  在配置文件里面配置,在通过ApplicationContext加载

4、Bean实例化的方式

  构造器实例化:<bean id = "instance", class = "instance.BeanClass"/>

  工厂实例化

5、循环依赖怎么解决

  改用setter方式

6、Bean对象的生命周期

  简单来讲创建、初始化、使用、销毁、初始化和销毁都可以调用相应的方法。

7、依赖注入的几种方式

  基于XML:构造器注入,setter方法。Bean对象太多会造成XML文件很长。

  基于注解:@Component:表示一个组件对象,用在任何层次上

       @Repository(仓库):用于Dao层

       @Service:用业务逻辑层

       @Controller:用于控制层

       自动装配

       @Autowired(自动装配):根据Bean的类型装配

       @Resource:根据Bean的名称装配

       @Qualifier:与@Autowired一起使用按照名称装配

8、动态代理与静态代理

  静态代理AspectJ在编译期织入,性能略高。

  动态代理JDK代理与CGLIB代理区别

  •   JDK代理要求Bean必须实现接口,CGLIB代理不要求Bean实现接口(可以强制使用)
  •   CGLIB对Bean的子类进行增强,所以不可以对final修饰的Bean进行代理

  静态代理:若代理类在程序运行前就已经存在,那么这种代理方式被成为静态代理 ,这种情况下的代理类通常都是我们在 Java 代码中定义的, 静态代理中的代理类和委托类会实现同一接口;

  动态代理:代理类在程序运行时创建的代理方式被称为动态代理。 也就是说,这种情况下,代理类并不是在 Java 代码中定义的,而是在运行时根据我们在 Java 代码中的 “指示” 动态生成的。

以上三种代理方式Spring全部支持。

9、Spring的事务管理

  简化了传统的数据库事务管理流程,提高了开发效率。

  机制:调用方法过程中抛出了未检查异常或者显示调用setRollBack方法,则事务回滚;

  如果事务执行完成或者抛出被检查异常则提交。

  事务分为基于接口的编程式和基于XML或注解的声明式,推荐使用声明式使得业务代码更加纯洁易维护。

10、Spring中用到的设计模式 

  •  工厂模式(BeanFactory)
  •  单例模式(默认的Bean的作用范围)
  •  代理模式(AOP)
  •  观察者模式
  •  DAO模式
  •  MVC模式

11、配置文件

  Spring的application.xml

  •  开启事务管理
  •  扫描包
  •  配置数据源
  •     配置代理

  MyBatis的mybatis-config.xml主要配置sql的映射文件

  SpringMVC的springmvc-servlet.xml主要配置ViewResolver(主要在控制器)

12、Spring的主要模块

  DAO、Web、AOP、Core、Tset

13、Bean对象的作用范围

  singleton:默认作用域单例,Spring容器中只有一个

  prototype:每次使用getBean都会创建一个Bean对象

  request:一次HTTP请求共享一个Bean对象

  session:一次会话共享一个Bean对象

  application:同一个应用共享一个Bean对象

  webSocekt : 每个socket对象创建一个

posted @ 2020-03-15 22:13  卑微芒果  Views(201)  Comments(0Edit  收藏  举报