SpringBoot晨考题
SpringBoot晨考题
-
描述Spring @Configuration @Bean @ComponentScan @PropertySource @Value注解
@Configration 注解:声明当前类是一个配置类,相当于 Spring 中的一个 XML 文件
@ComponentScan主要就是定义扫描的路径,并从中找出标识了需要装配的类,自动装配到spring的bean容器中;
@Bean是一个方法级别上的注解(返回某个实例的方法),等价于spring的xml配置文件中的
<bean>,作用为:注册bean对象,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。@PropertySource注解声明配置文件存放的地方
@Value来读取找到的配置文件中的值
-
什么是SpringBoot,优点和缺点?
springboot 是构建在spring框架顶部的项目,它提供了一种跟快捷,更简单的方法来设置、配置、运行基于web的应用程序。
1.优点- 快速构建项目。
- 对主流开发框架的无配置集成。
- 项目可独立运行,无须外部依赖Servlet容器。
- 提供运行时的应用监控。
- 极大地提高了开发、部署效率。
- 与云计算的天然集成。
2.缺点
- 版本迭代速度很快,一些模块改动很大。
- 由于不用自己做配置,报错时很难定位。
- 网上现成的解决方案比较少。
-
什么是yml? 语法格式(说3点)
yml是一种yaml格式的配置文件,主要采用一定的空格、换行等格式排版进行配置。
yml是一种直观的能够被计算机识别的数据序列化格式。容易被人阅读。yaml类似于XML,但是语法比XML简洁很多。- 使用缩进表示层级关系
- 缩进时不允许使用Tab键,只允许使用空格
- 缩进的空格的数目不重要,只要相同层级的元素左对齐即可
- 大小写敏感
-
SpringBoot(描述4个注解)并说明其作用
SpringBoot的核心注解是@SpringBootApplication由以下3个注解组成:
@SpringBootConfiguration:它组合了Configuration注解实现了 配置文件的功能。
@EnableAutoConfiguration:打开自动配置功能,也可以关闭某个指定的自动配置选项
@ComponentScan:Spring扫描组件。
-
Spring Boot 的核心注解是哪个?主要由哪几个注解组成的?
SpringBoot的核心注解是
@SpringBootApplication
@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan
-
Spring-boot-maven-plugin插件作用
当运行“mvn package”进行打包时,会打包成一个可以直接运行的 JAR 文件,使用“java -jar”命令就可以直接运行。
-
Springboot自动配置的原理
Spring Boot的自动配置注解是@EnableAutoConfiguration, 从上面的@Import的类可以找到下面自动加载自动配置的映射。
@EnableAutoConfiguration注解内使用到了@import注解来完成导入配置的功能,而EnableAutoConfigurationImportSelector.clss内部则是使用了SpringFactoriesLoader.loadSpringFactoriss方法进行扫描具有META-INF/spring.factories文件的jar
-
Springboot读取配置文件的方式
1.读取xml配置文件
2.读取application文件
3.1@PropertySource+@Value注解读取方式
3.2@PropertySource+@ConfigurationProperties注解读取方式
4.Environment读取方式
-
maven 生命周期 clean package install
1、clean生命周期:清理项目,包含三个phase。
1)pre-clean:执行清理前需要完成的工作
2)clean:清理上一次构建生成的文件
3)post-clean:执行清理后需要完成的工作
2、default生命周期:构建项目,重要的phase如下。
1)validate:验证工程是否正确,所有需要的资源是否可用。验证 validate
2)compile:编译项目的源代码。 编译 compile
3)test:使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。测试 Test
4)Package:把已编译的代码打包成可发布的格式,比如jar。包装 package
5)integration-test:如有需要,将包处理和发布到一个能够进行集成测试的环境。
6)verify:运行所有检查,验证包是否有效且达到质量标准。检查 verify
7)install:把包安装到maven本地仓库,可以被其他工程作为依赖来使用。安装 install
8)Deploy:在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。部署 deploy3、site生命周期:建立和发布项目站点,phase如下
1)pre-site:生成项目站点之前需要完成的工作
2)site:生成项目站点文档
3)post-site:生成项目站点之后需要完成的工作
4)site-deploy:将项目站点发布到服务器
-
maven scope都有哪些,描述什么区别?
scope定义了类包在项目的使用阶段。项目阶段包括: 编译,运行,测试和发布。
分类说明
compile
默认scope为compile,表示为当前依赖参与项目的编译、测试和运行阶段,属于强依赖。打包之时,会达到包里去。test
该依赖仅仅参与测试相关的内容,包括测试用例的编译和执行,比如定性的Junit。runtime
依赖仅参与运行周期中的使用。一般这种类库都是接口与实现相分离的类库,比如JDBC类库,在编译之时仅依赖相关的接口,在具体的运行之时,才需要具体的mysql、oracle等等数据的驱动程序。
此类的驱动都是为runtime的类库。provided
该依赖在打包过程中,不需要打进去,这个由运行的环境来提供,比如tomcat或者基础类库等等,事实上,该依赖可以参与编译、测试和运行等周期,与compile等同。区别在于打包阶段进行了exclude操作。system
使用上与provided相同,不同之处在于该依赖不从maven仓库中提取,而是从本地文件系统中提取,其会参照systemPath的属性进行提取依赖。import
这个是maven2.0.9版本后出的属性,import只能在dependencyManagement的中使用,能解决maven单继承问题,import依赖关系实际上并不参与限制依赖关系的传递性。 -
什么是日志,为什么需要日志?
日志用来记录用户操作、系统运行状态等,是一个系统的重要组成部分。
好的日志可以帮助系统的开发和运维人员:
- 了解线上系统的运行状态
- 快速准确定位线上问题
- 发现系统瓶颈
- 预警系统潜在风险
- 挖掘产品最大价值
不好的日志导致:
- 对系统的运行状态一知半解,甚至一无所知
- 系统出现问题无法定位,或者需要花费巨大的时间和精力
- 无法发现系统瓶颈,不知优化从何做起
- 无法基于日志对系统运行过程中的错误和潜在风险进行监控和报警
- 对挖掘用户行为和提升产品价值毫无帮助
-
日志的级别有哪些?
og4j定义了8个级别的log(除去OFF和ALL,可以说分为6个级别),优先级从高到低依次为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL。
ALL 最低等级的,用于打开所有日志记录。
TRACE designates finer-grained informational events than the DEBUG.Since:1.2.12,很低的日志级别,一般不会使用。
DEBUG 指出细粒度信息事件对调试应用程序是非常有帮助的,主要用于开发过程中打印一些运行信息。
INFO 消息在粗粒度级别上突出强调应用程序的运行过程。打印一些你感兴趣的或者重要的信息,这个可以用于生产环境中输出程序运行的一些重要信息,但是不能滥用,避免打印过多的日志。
WARN 表明会出现潜在错误的情形,有些信息不是错误信息,但是也要给程序员的一些提示。
ERROR 指出虽然发生错误事件,但仍然不影响系统的继续运行。打印错误和异常信息,如果不想输出太多的日志,可以使用这个级别。
FATAL 指出每个严重的错误事件将会导致应用程序的退出。这个级别比较高了。重大错误,这种级别你可以直接停止程序了。
OFF 最高等级的,用于关闭所有日志记录。
-
HTTP常用状态码 (4/5各准备2个)?
400 Bad Request:表示请求报文中存在语法错误;
401 Unauthorized:未经许可,需要通过HTTP认证;
403 Forbidden:服务器拒绝该次访问(访问权限出现问题)
404 Not Found:表示服务器上无法找到请求的资源,除此之外,也可以在服务器拒绝请求但不想给拒绝原因时使用;
500 Inter Server Error:表示服务器在执行请求时发生了错误,也有可能是web应用存在的bug或某些临时的错误时;
503 Server Unavailable:表示服务器暂时处于超负载或正在进行停机维护,无法处理请求;

浙公网安备 33010602011771号