Java八股文面试题之SpringBoot(一)

目录

1.说一说Spring Ioc的工作流程

2.ApplicationContext和BeanFactory有什么区别? 

3.SpringBoot启动类用到了什么注解?都有什么作用?


1.说一说Spring Ioc的工作流程

这个问题我将从三个方面来回答:

(1)Ioc是什么?

Ioc也就是控制反转,核心思想就是把对象的管理权限交给了容器,应用程序如果要使用某个对象的实例,那么直接从Ioc容器中获取就可以了。这种设计的好处在于降低了对象和对象之间的藕合性,使得程序变得更加灵活。

(2)Bean的声明方式有哪些?

一般来说,一共有三种:

第一,基于XML的方式配置。可以在XML配置文件里面通过<Bean>的标签进行声明

第二,基于注解扫描的方式配置。可以通过@Service、@Controller、@Repository等注解进行声明

第三,基于Java类的配置。可以在Configuration配置类里面,通过@Bean注解去声明

(3)Ioc的工作流程

工作流程大致可以分为两个阶段:

第一,是Ioc容器的初始化阶段。该阶段主要是根据程序里面定义的XML文件或者注解等Bean的声明方式,去解析和加载后生成BeanDefinition,然后把BeanDefinition注册到容器里面。

第二,是Bean的实例化阶段。当某个请求通过容器的getBean()方法明确的请求某个对象,就会触发这个阶段。

2.ApplicationContext和BeanFactory有什么区别? 

ApplicationContext和BeanFactory都是Spring框架中提供的IOC容器,用来管理对象的创建、配置、依赖注入、生命周期等。它们的主要作用是提高应用程序的可维护性、可扩展性、降低耦合度。

  1. 加载方式:BeanFactory采用延迟加载方式,即只在需要使用Bean时才进行实例化,而ApplicationContext在启动时就进行实例化。

  2. 功能:ApplicationContext在BeanFactory的基础上添加了更多的企业级功能,例如AOP、国际化支持、事件传递等。

  3. 性能:ApplicationContext相比于BeanFactory性能更好,这是因为它在初始化时会实例化所有的Bean,并缓存起来,降低了Bean的查找和实例化次数。

  4. 作用域:ApplicationContext提供了多种作用域,例如singleton、prototype、request、session等作用域,而BeanFactory只提供singleton和prototype两种作用域。

  5. 使用方式:使用BeanFactory容器首先需要定义XML配置文件,指定Bean的ID、Class以及Bean的属性,然后调用BeanFactory.getBean()方法来获取实例。使用ApplicationContext容器一般和BeanFactory一样也要定义XML配置文件,但是通过调用ClassPathXmlApplicationContext或FileSystemXmlApplicationContext等类的构造函数,实例化一个ApplicationContext对象,就可以获取被实例化的Bean了。

国际化支持:Spring应用程序可以支持多种语言和文化习惯,ApplicationContext提供了统一的国际化机制来处理显示给用户的文本信息。通过国际化机制,可以将应用程序的文本信息转化为多国语言版本,并根据不同的本地化选项进行切换。例如,可以根据用户的浏览器语言设置,自动切换到相应的语言版本,从而提供更好的用户体验。

事件传递:Spring应用程序是事件驱动的,通过ApplicationContext,应用程序中的组件可以相互通信、协作。ApplicationContext提供了一种基于事件的机制,允许组件之间发送和接收事件,从而实现解耦合、松散耦合的应用程序。例如,当一个组件完成某个任务之后,可以向其他组件发送一个事件通知,其他组件可以通过注册监听器来接收相应的事件,并进行相应的处理操作。

3.SpringBoot启动类用到了什么注解?都有什么作用?

  1. @SpringBootApplication:这是Spring Boot应用程序启动类的核心注解,它包括了@ComponentScan、@EnableAutoConfiguration和@SpringBootConfiguration这三个注解的功能。@ComponentScan扫描应用程序中的其他组件,@EnableAutoConfiguration自动配置Spring上下文环境,@SpringBootConfiguration表示这是Spring Boot的配置类。

  2. @Import:这个注解允许将其他配置类或者Bean导入到当前配置类中,方便管理和维护。

  3. @MapperScan:是MyBatis框架中的注解之一,它的作用是扫描指定包下的所有MyBatis Mapper接口,并自动将它们注册为Spring容器中的Bean。

  4. @EnableTransactionManagement:这个注解的作用是开启Spring对事务的管理,这样就可以使用@Transactional注解声明事务,简化编码和配置工作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值