spring

Spring有很多优点:

IOC 和 DI 的支持:控制反转和依赖注入。
AOP 编程的支持:可以方便的实现对程序进行权限拦截、运行监控等切面功能。
声明式事务的支持:支持通过配置就来完成对事务的管理,而不需要通过硬编码的方式。
快捷测试的支持:对 Junit 提供支持,可以通过注解快捷地测试。
快速集成功能:其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz 等)的直接支持。
复杂API模板封装:JDBC、JavaMail、远程调用等)都提供了模板化的封装,这些封装 API 的提供使得应用难度大大降低。

Spring框架中有许多常用的注解

@Component: 通用的组件注解,用于标识一个类为Spring的组件,让Spring可以扫描并将其作为Bean进行管理。

@Repository: 用于标识一个类为数据访问层组件,通常用于DAO类。

@Service: 用于标识一个类为业务逻辑层组件,通常用于Service类。

@Controller: 用于标识一个类为控制器组件,通常用于Spring MVC中的Controller类。

@Configuration: 用于标识一个类为配置类,通常与@Bean注解一起使用,用于替代xml配置文件。

@Autowired: 用于自动装配Bean,可以用在字段、构造器、Setter方法上。

@Qualifier: 与@Autowired一起使用,用于指定注入的Bean的名称。

@Value: 用于注入属性值,可以用在字段、构造器、方法上。

@Bean: 用于定义Bean,通常用在@Configuration注解的类中。

@Scope: 用于定义Bean的作用域,如singleton、prototype等。

@PostConstruct: 用于指定初始化方法,在Bean初始化之后调用。

@PreDestroy: 用于指定销毁方法,在Bean销毁之前调用。

@Aspect: 用于定义切面,结合其他注解如@Before、@After等实现AOP功能。

@Transactional: 用于声明事务,通常用在Service层的方法上。

Spring 框架中广泛使用了不同类型的设计模式,下面我们来看看到底有哪些设计模式?

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

说一说什么是IOC?什么是DI?

所谓的IOC(控制反转):就是由容器来负责控制对象的生命周期和对象间的关系。以前是我们想要什么,就自己创建什么,现在是我们需要什么,容器就给我们送来什么。

DI(依赖注入):指的是容器在实例化对象的时候把它依赖的类注入给它。有的说法IOC和DI是一回事,有的说法是IOC是思想,DI是IOC的实现。

为什么要使用IOC呢?
最主要的是两个字解耦硬编码会造成对象间的过度耦合,使用IOC之后,我们可以不用关心对象间的依赖,专心开发应用就行。

能简单说一下Spring IOC的实现机制吗?

配置文件
首先,我们需要在配置文件中定义Bean。Spring支持多种配置方式,包括XML配置、注解配置和Java Config配置等。其中,XML配置是最常用的一种方式。

加载配置文件
接下来,Spring IOC容器需要加载配置文件,并解析其中的Bean定义。在解析过程中,容器会根据配置信息创建相应的BeanDefinition对象,并将其保存在内存中。

创建Bean实例
当容器需要某个Bean时,它会根据对应的BeanDefinition创建该Bean的实例。这通常是通过Java的反射机制来实现的,即根据Bean的类名使用Class.forName()方法获取对应的Class对象,然后调用newInstance()方法创建实例。

依赖注入
在创建Bean实例后,容器会检查该Bean是否依赖其他Bean。如果存在依赖关系,容器会根据配置信息自动将依赖的Bean注入到目标Bean中。注入方式有多种,包括构造函数注入、Setter方法注入和字段注入。

生命周期管理
在完成依赖注入后,容器会调用Bean的初始化方法(如果有定义的话),进行必要的初始化操作。同时,容器还会监控Bean的生命周期,在容器关闭时销毁Bean实例。

说说BeanFactory和ApplicantContext?

BeanFactory是类的通用工厂,可以创建并管理各种类的对象。
ApplicationContext由BeanFactory派生而来,提供了更多面向实际应用的功能。可以这么说,使用BeanFactory就是手动档,使用ApplicationContext就是自动档。
BeanFactory是延时加载,也就是说在容器启动时不会注入bean,而是在需要使用bean的时候,才会对该bean进行加载实例化。
ApplicationContext 是在容器启动的时候,一次性创建所有的bean,所以运行的时候速度相对BeanFactory比较快

你知道Spring容器启动阶段会干什么吗?

加载配置文件:Spring启动时会加载配置文件,例如application.properties或application.yml等。这些配置文件中包含了Spring应用程序所需的各种配置信息,例如数据库连接参数、日志配置、缓存配置等。

创建并管理Bean实

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值