SpringBoot晨考题

SpringBoot晨考题

  1. 描述Spring @Configuration @Bean @ComponentScan @PropertySource @Value注解

    @Configration 注解:声明当前类是一个配置类,相当于 Spring 中的一个 XML 文件

    @ComponentScan主要就是定义扫描的路径,并从中找出标识了需要装配的类,自动装配到spring的bean容器中;

    @Bean是一个方法级别上的注解(返回某个实例的方法),等价于spring的xml配置文件中的<bean>,作用为:注册bean对象,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。

    @PropertySource注解声明配置文件存放的地方

    @Value来读取找到的配置文件中的值

  2. 什么是SpringBoot,优点和缺点?

    springboot 是构建在spring框架顶部的项目,它提供了一种跟快捷,更简单的方法来设置、配置、运行基于web的应用程序。
    1.优点

    • 快速构建项目。
    • 对主流开发框架的无配置集成。
    • 项目可独立运行,无须外部依赖Servlet容器。
    • 提供运行时的应用监控。
    • 极大地提高了开发、部署效率。
    • 云计算的天然集成。

    2.缺点

    • 版本迭代速度很快,一些模块改动很大。
    • 由于不用自己做配置,报错时很难定位。
    • 网上现成的解决方案比较少。
  3. 什么是yml? 语法格式(说3点)

    yml是一种yaml格式的配置文件,主要采用一定的空格、换行等格式排版进行配置。
    yml是一种直观的能够被计算机识别的数据序列化格式。容易被人阅读。yaml类似于XML,但是语法比XML简洁很多。

    1. 使用缩进表示层级关系
    2. 缩进时不允许使用Tab键,只允许使用空格
    3. 缩进的空格的数目不重要,只要相同层级的元素左对齐即可
    4. 大小写敏感
  4. SpringBoot(描述4个注解)并说明其作用

    SpringBoot的核心注解是@SpringBootApplication由以下3个注解组成:

    @SpringBootConfiguration:它组合了Configuration注解实现了 配置文件的功能。

    @EnableAutoConfiguration:打开自动配置功能,也可以关闭某个指定的自动配置选项

    @ComponentScan:Spring扫描组件。

  5. Spring Boot 的核心注解是哪个?主要由哪几个注解组成的?

    SpringBoot的核心注解是

    @SpringBootApplication

    @SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan

  6. Spring-boot-maven-plugin插件作用

    当运行“mvn package”进行打包时,会打包成一个可以直接运行的 JAR 文件,使用“java -jar”命令就可以直接运行。

  7. Springboot自动配置的原理

    Spring Boot的自动配置注解是@EnableAutoConfiguration, 从上面的@Import的类可以找到下面自动加载自动配置的映射。

    @EnableAutoConfiguration注解内使用到了@import注解来完成导入配置的功能,而EnableAutoConfigurationImportSelector.clss内部则是使用了SpringFactoriesLoader.loadSpringFactoriss方法进行扫描具有META-INF/spring.factories文件的jar

  8. Springboot读取配置文件的方式

    1.读取xml配置文件

    2.读取application文件

    3.1@PropertySource+@Value注解读取方式

    3.2@PropertySource+@ConfigurationProperties注解读取方式

    4.Environment读取方式

  9. 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,使得其他的开发者或者工程可以共享。部署 deploy

    3、site生命周期:建立和发布项目站点,phase如下

    1)pre-site:生成项目站点之前需要完成的工作

    2)site:生成项目站点文档

    3)post-site:生成项目站点之后需要完成的工作

    4)site-deploy:将项目站点发布到服务器

  10. 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依赖关系实际上并不参与限制依赖关系的传递性。

  11. 什么是日志,为什么需要日志?

    日志用来记录用户操作、系统运行状态等,是一个系统的重要组成部分。

    好的日志可以帮助系统的开发和运维人员:

    1. 了解线上系统的运行状态
    2. 快速准确定位线上问题
    3. 发现系统瓶颈
    4. 预警系统潜在风险
    5. 挖掘产品最大价值

    不好的日志导致:

    1. 对系统的运行状态一知半解,甚至一无所知
    2. 系统出现问题无法定位,或者需要花费巨大的时间和精力
    3. 无法发现系统瓶颈,不知优化从何做起
    4. 无法基于日志对系统运行过程中的错误和潜在风险进行监控和报警
    5. 对挖掘用户行为和提升产品价值毫无帮助
  12. 日志的级别有哪些?

    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 最高等级的,用于关闭所有日志记录。

  13. HTTP常用状态码 (4/5各准备2个)?

    400 Bad Request:表示请求报文中存在语法错误;

    401 Unauthorized:未经许可,需要通过HTTP认证;

    403 Forbidden:服务器拒绝该次访问(访问权限出现问题)

    404 Not Found:表示服务器上无法找到请求的资源,除此之外,也可以在服务器拒绝请求但不想给拒绝原因时使用;


    500 Inter Server Error:表示服务器在执行请求时发生了错误,也有可能是web应用存在的bug或某些临时的错误时;

    503 Server Unavailable:表示服务器暂时处于超负载或正在进行停机维护,无法处理请求;

posted @ 2020-12-22 20:58  左岸小镇_梦归  阅读(430)  评论(0)    收藏  举报