1、什么是 Spring 框架,它的优点是什么?它的主要功能是什么?
Spring 框架是一个开源的 Java 框架,主要用于开发企业级 Java 应用程序。它提供了一组强大的功能和工具,使得开发者能够更加容易地构建高效、可维护和可扩展的 Java 应用程序。
Spring 框架的主要优点包括:
1、轻量级:Spring 框架非常轻量级,它的核心容器只包含少量的类和接口,它不需要太多的配置和依赖。因此它的速度非常快。
2、依赖注入:Spring 框架通过依赖注入(DI)来管理组件之间的关系,使得组件之间的耦合度降低。
3、面向切面编程(AOP):Spring 框架提供了面向切面编程的支持,可以将横切关注点(比如安全、日志、事务等)与业务逻辑代码分离。
4、容器:Spring 框架提供了一个容器,用于管理应用程序的对象和依赖关系,并提供了一些可重用的核心组件,如 BeanFactory、ApplicationContext 等,这些对象可以是 Spring Bean、JDBC 连接、JMS 连接、Servlet 等。
5、事务管理:Spring 框架提供了声明式事务管理的支持,使得开发者可以很容易地进行事务管理。
6、集成:Spring 框架提供了与其他框架的集成支持,比如与 Hibernate、MyBatis、Struts 等框架的集成。
Spring 框架的主要功能包括:
1、提供了一个容器用于管理应用程序的对象和依赖关系。
2、提供了依赖注入(DI)的支持,用于管理应用程序的组件和对象之间的依赖关系。
3、提供了 AOP 的支持,用于解决应用程序中的横切关注点。
4、提供了声明式事务管理机制,使得开发者可以更容易地管理事务。
5、提供了 MVC 框架,用于构建 Web 应用程序。
6、提供了数据访问框架,使得开发者可以更容易地访问和操作数据库。
7、提供了缓存框架和安全框架,用于提高应用程序的性能和安全性。
2、IOC 和 AOP 是什么,它们的作用是什么?
IOC(Inversion of Control,控制反转)是 Spring 框架的核心思想之一。它是一种设计模式,通过将对象的创建和依赖关系的管理交给 Spring 容器来实现,从而实现对象之间的解耦和灵活性。
AOP(Aspect Oriented Programming,面向切面编程)是 Spring 框架提供的一种重要机制,它可以将应用程序中的横切关注点(如日志、事务、安全等)从业务逻辑中分离出来,并集中管理。
3、Spring 中如何使用 AOP?常用的切面类型有哪些?
Spring 中使用 AOP 可以通过两种方式:XML 配置和注解配置。
使用 XML 配置时,需要定义切面、连接点和通知等元素。
使用注解配置时,需要在类或方法上添加相应的注解,
如 @Aspect、@Before、@After、@Around 等。
常用的切面类型包括:
Before:在方法执行前执行通知
After:在方法执行后执行通知
AfterReturning:在方法返回结果后执行通知
AfterThrowing:在方法抛出异常后执行通知
Around:在方法执行前和执行后都可以执行通知
4、Spring 中的依赖注入(DI)是什么,它的作用是什么?它有哪些常用的注入方式?
依赖注入(DI)是 Spring 框架的另一个核心思想,它是一种通过 Spring 容器进行对象创建和依赖关系管理的方式。
通过 DI,Spring 将需要依赖的对象注入到另一个对象中,从而实现对象之间的解耦和灵活性。
常用的注入方式包括:
1、构造函数注入:通过构造函数注入依赖关系
2、Setter 方法注入:通过 Setter 方法注入依赖关系
3、字段注入:通过字段注入依赖关系
4、接口注入:通过接口注入依赖关系
其中,构造函数注入和 Setter 方法注入是最常用的注入方式。
5、Spring 框架中的核心模块有哪些,它们都是干什么的?
1、Spring Core:Spring 核心模块提供了 IOC(控制反转)和 DI(依赖注入)的支持,用于管理应用程序中的对象和依赖关系。
2、Spring AOP:Spring AOP 模块提供了 AOP(面向切面编程)的支持,用于解决应用程序中的横切关注点。
3、Spring Context:Spring 上下文模块是 Spring 核心模块的扩展,提供了 BeanFactory 的功能,并且还提供了许多企业级服务,例如 JNDI(Java 命名和目录接口)访问、EJB(企业 Java Bean)集成、远程访问和国际化等。
4、Spring JDBC:Spring JDBC 模块提供了 JDBC(Java 数据库连接)的支持,并且还提供了更高级别的抽象,使得开发者更容易地访问和操作数据库。
5、Spring ORM:Spring ORM 模块提供了对 ORM(对象关系映射)框架的支持,如 Mybatis、Hibernate、JPA(Java 持久化 API)等。
6、Spring Web:Spring Web 模块提供了构建 Web 应用程序所需的各种特性和工具,如 MVC(模型-视图-控制器)框架、RESTful Web 服务、WebSocket 和 Servlet 等。
7、Spring Test:Spring Test 模块提供了对单元测试和集成测试的支持,如 JUnit 和 TestNG 等。
这些核心模块提供了 Spring 框架的基础功能和特性,使得开发者可以更加容易地构建高效、可维护和可扩展的 Java 应用程序。
6. ioc和di的区别
IOC(控制反转)和DI(依赖注入)都是Spring框架的核心思想,它们的主要区别在于角度和关注点不同。
控制反转(IOC)是容器角度的描述,它将对象创建和管理权交给Spring容器,由容器负责维护对象生命周期。在Spring框架中,使用IOC可以降低对象之间的耦合度,提高系统的可维护性和可重用性。
依赖注入(DI)则是从应用程序角度描述,它将应用程序依赖的对象通过setter方法或者构造器注入到目标对象中。依赖注入降低了代码的复杂性,使得对象之间的关系更加清晰,并且有利于单元测试。
总的来说,IOC更关注容器层面的操作,而DI更关注对象之间的关系管理。同时,IOC是一种广泛的概念,而DI是实现IOC的一种方式。
7、IOC的实现原理
反射是Java语言的一个特性,它允许程序在运行时(注意不是编译的时候)来进行自我检查并且对内部的成员进行操作。例如它允许一个Java类获取它所有的成员变量和方法并且显示出来。
IOC控制反转 ,目的为了让我们编写出更加松耦合,更加优雅的程序。传统的程序需要我们在类的内部显示的创建依赖对象。从而导致类与类之间的耦合度过高。,将对象的创建,查找依赖,以及生命周期的控制权交给了 Ioc 容器。对象之间
耦合较松,更加灵活。
IOC实现的基础是工厂模式和反射机制
但是对于传统的工厂模式,如果增加新的水果类,就需要改动工厂类,采用反射的方式进行解决。