1.springboot中的核心启动主函数(main函数)有什么作用?用到哪些注解?注解有什么作用?
@SpringBootApplication
public class SpringBoot1Application {
public static void main(String[] args) {
SpringApplication.run(SpringBoot1Application.class, args);}
}
该主函数: 主要启动springboot框架.用于加载容器和Spring等默认组件.
用到核心注解: @SpringBootApplication . 作用:用于标识声明一个springboot框架容器.
启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,主要组合包含了以下 3 个注解:
@SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class})。
@ComponentScan:Spring组件扫描。
2.需要加载外部配置文件中的自定义属性,该如何实现?
需求⼀批量加载多个属性.
步骤⼀: ⾸先需要⾃定义外部配置⽂件和其中的⾃定义属性:
user.properties . 存放在resources⽬录下:
内部:
#⾃定义配置其他属性:
user.username=zhangsan
user.age=20
步骤⼆: 加载属性到程序中:
@PropertySource(value ="classpath:user.properties")
@ConfigurationProperties(prefix ="user")
@Component
public class User {
private String username;
private Integer age;
get/set封装省略....
}
步骤三:
以上配置需要在main启动函数类⽂件上激活配置: 新版本中默认开启.
@EnableConfigurationProperties
需求⼆:如果加载单个属性:
步骤⼀:省略.如上.
步骤⼆:
@Value("${name}")
private String name;.
备注:以上外部⽂件属性加载.切记注意中⽂乱码问题.
3.springboot项目的开发环境,生产环境配置该如何实现切换?
①用application.properties做配置文件,可以 配置多个环境的配置文件,不同环境配置不同的端口
②用yml做配置文件
4、SpringBoot特性有:
SpringBoot
Starter:他将常⽤的依赖分组进⾏了整合,将其合并到⼀个依赖中,这样就可以⼀次性添加到项⽬的Maven或Gradle构建中;
⾃动配置:SpringBoot的⾃动配置特性利⽤了Spring4对条件化配置的⽀持,合理地推测应⽤所需的bean并⾃动化配置他们;
命令⾏接⼝:(Command-line-interface,CLI):SpringBoot的CLI发挥了Groovy编程语⾔的优势,并结合⾃动配置进⼀步简化Spring应⽤的开发;
Actuatir:它为SpringBoot应⽤的所有特性构建⼀个⼩型的应⽤程序。但⾸先,我们快速了解每项特性,更好的体验他们如何简化Spring编程模型。
5、SpringBoot有哪些优点
①独立运行,使用java -jar xx.jar即可运行
②简化配置
③自动配置
④无代码生成和XML配置,通过注解来实现
⑤内嵌服务容器
6、什么是YAML?
YAML是⼀种⼈类可读的数据序列化语⾔。它通常⽤于配置⽂件。与属性⽂件相⽐,如果我们想要在配置⽂件中添加复杂的属性,YAML⽂件就更加结构化,⽽且更少混淆。可以看出YAML具有分层配置数据。
7、什么是 Spring Profiles?
Spring Profiles允许⽤户根据配置⽂件(dev,test,prod等)来注册bean。因此,当应⽤程序在开发中运⾏时,
只有某些bean可以加载,⽽在PRODUCTION中,某些其他bean可以加载。假设我们的要求是Swagger⽂档仅适⽤于QA环境,
并且禁⽤所有其他⽂档。这可以使⽤配置⽂件来完成。Spring Boot使得使⽤配置⽂件⾮常简单。
8、Spring Boot 还提供了其它的哪些 Starter 选项?
spring-boot-starter-web-services - SOAP Web Services;
spring-boot-starter-web - Web 和 RESTful 应⽤程序;
spring-boot-starter-test - 单元测试和集成测试;
spring-boot-starter-jdbc - 传统的 JDBC;
spring-boot-starter-hateoas - 为服务添加 HATEOAS 功能;
spring-boot-starter-security - 使⽤ SpringSecurity 进⾏⾝份验证和授权;
spring-boot-starter-data-jpa - 带有 Hibeernate 的 Spring Data JPA;
spring-boot-starter-data-rest - 使⽤ Spring Data REST 公布简单的 REST 服务;
9、@SpringBootApplication注解包含那几个注解并且说明下作用?
①@SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
②@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能 @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
③@ComponentScan:Spring组件扫描
10、什么是 JavaConfig,说明一下优点?
①面向对象的配置。
由于配置被定义为JavaConfig中的类,因此用户可以充分使用Java中的面向对象功能。一个配置类可以继承另一个,重写它的@Bean方法等。
②减少或者消除XML配置。 提供了一种纯Java的方法来配置与XML配置概念相似的Spring容器。
③类型安全和重构友好。提供了一种类型安全的方法了来配置spring容器,由于Java5.0对泛型的支持,现在可以按类型而不是名称检索bean,不需要任何的强制转换或者基于字符串的查找。
11、YAML 配置的优势在哪里?
配置有序,在一些特殊的场景下,配置有序很关键 支持数组,数组中的元素可以是基本数据类型也可以是对象 简洁 相比 properties
配置文件,YAML 还有一个缺点,就是不支持 @PropertySource 注解导入自定义的 YAML 配置。