Spring | Springboot 面试题

本文深入探讨Spring框架的核心概念,包括IOC容器、AOP、面向切面编程等,并介绍了Spring Boot的特性及其核心注解@SpringBootApplication的工作原理。此外,还讨论了Spring Boot支持的常用Starters及缓存注解。

Spring

Spring Framework 开发参考手册 : http://shouce.jb51.net/spring/

Spring不仅是一个技术框架,而且是一个完整的生态。最重要的就是扩展性。

IOC 容器

概念

实现方式进化过程实现方式
IOC反射new 对象->工厂模式生成对象->IOC容器xml,注解,java
AOP动态代理(jdk,cglib)

OOP 面向对象编程更多的是继承关系,上下关系。

AOP 面向切面编程是横向关系

@Configuration 类上加

该类等价 与XML中配置beans,相当于Ioc容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean,与xml中配置的bean意思一样。

@Autowired与@Resource的区别?

@Autowired,Spring提供的注解默认按类型,如果想使用名称进行装备可以和@Qualifire一起使用

@Resource J2EE提供的注解,默认按名字

什么叫做Aspect切面(连接点,切点,通知所在的类叫做切面)。切点是连接点的集合

@Service,通常用于service类,也就是服务层

@Component,

@Repository通常用于Dao类,也就是持久层

,@Controller通常用于Controller类,也就是控制层(MVC结构)

Aspect Oriented Programming面向切面编程

观察者模式:在Spring容器中,有一系列的监听器(不止监听Bean的创建和销毁),用来完成,在不同的阶段做不同的处理工作。

AbstractApplicationContext.refresh()

#########################################################################################################################

Springboot

Springboot Starters 用过哪些?工作原理是什么?

说一些常用的就可以,比如下面几个

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<!-- mybatis -->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.1.3</version>
		</dependency>

工作原理:

Springboot的核心注解有哪些?

  • 启动类上面的注解是@SpringBootApplication,它是个组合注解。也是 Spring Boot 的核心注解,主要组合包含了以下 3 个注解:
  • @SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
  • @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
  • @ComponentScan:Spring组件扫描。

Springboot怎么支持事务?

各服务之间通信,对Restful和RPC这2种方式如何做选择?

在传统的SOA治理中,使用RPC的居多;Spring Cloud默认使用restful进行服务之间的通讯。RPC通讯效率会比restful要高一些,但是对于大多数公司来讲,这点效率影响甚微。我建议使用restful这种方式,易于在不同语言实现的服务之间通讯。

Spring Cache 三种常用的缓存注解和意义?

@Cacheable ,用来声明方法是可缓存,将结果存储到缓存中以便后续使用相同参数调用时不需执行实际的方法,直接从缓存中取值。

@CachePut,使用 @CachePut 标注的方法在执行前,不会去检查缓存中是否存在之前执行过的结果,而是每次都会执行该方法,并将执行结果以键值对的形式存入指定的缓存中。

@CacheEvict,是用来标注在需要清除缓存元素的方法或类上的,当标记在一个类上时表示其中所有的方法的执行都会触发缓存的清除操作。

    

### 关于Java SpringSpring Boot的常见面试问题及答案 #### 什么是Spring框架? Spring是一个轻量级的控制反转(IoC)容器和支持工具集,旨在解决企业应用程序开发中的复杂性。它提供了一站式的解决方案,涵盖了从Web到持久层的各种需求[^2]。 #### Spring的核心模块有哪些? 核心模块包括但不限于: - **Core Container**:包含了BeanFactory、ApplicationContext等基础组件。 - **AOP (Aspect Oriented Programming)**:用于实现面向切面编程的支持。 - **Data Access/Integration**:支持JDBC、ORM、OXM、JMS等功能。 - **Web**:提供了创建Web应用程序所需的功能,比如MVC框架。 #### 解释下IoC/DI的概念及其作用是什么? IoC即Inverse of Control(控制反转),DI则是Dependency Injection(依赖注入)的具体形式之一。通过这种方式可以降低对象之间的耦合度,使得测试更加容易,并提高了灵活性和可维护性[^1]。 #### 如何理解Spring Boot? Spring Boot是建立在现有Spring基础上的一个新项目,其目的是帮助开发者更加快捷地构建独立运行的应用程序和服务。它遵循“约定优于配置”的原则,默认情况下已经做了很多合理的设定,减少了繁琐的手动设置过程。 #### Spring Boot是如何简化Spring应用开发工作的? 主要体现在以下几个方面: - 起步依赖管理:引入了Starters机制,方便快捷地添加所需的第三方库; - 生产就绪特性:内置了许多生产环境中常用的实用功能,如性能监控、健康检查报告等; - 不再需要XML配置文件,采用基于注解的方式完成大部分工作; #### 日志记录框架的选择 当使用Spring Boot Starter时,默认的日志记录框架为Logback。当然也允许切换成其他选项,例如Java Util Logging或Log4j2,只需相应调整项目的pom.xml即可[^3]。 #### 更改服务监听端口号的方法 如果想要改变Spring Boot web服务器所使用的HTTP端口,则可以通过修改`application.properties`文件内的属性值来达成目的。具体来说就是将`server.port=8090`这样的语句加入其中[^4]。 ```properties # application.properties 文件片段 server.port = 8090 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ScreamCode

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值