淘先锋技术网

首页 1 2 3 4 5 6 7

11bb2e1976a1d5d9c0cc7682b1834643.png


导读:        1.1 概论        1.2 Springboot  配置方面         1.3 Springboot 注解方面         1.4 Springboot 处理异常         1.5 Springboot 处理跨域         1.6 Springboot 其它相关问题
1.1 概论1. 什么是Springboot    Spring Boot 是在 Spring 的基础之上产生的(确切的说是在 Spring4.0 的版本的基础之上), 其中“Boot”的意思就是“引导”,意在简化开发模式,是开发者能够快速的开发出基于 Spring 的应用。2. 说说没有用Springboot 开发时项目项目是什么样的?
  •     在项目中存在大量的 xml 文件,配置相当繁琐 

  •     整合第三方框架时的配置问题 

  •     低效的开发效率与部署效率问题

3. 说说Springboot 解决了什么(就是变相的问你优点)

  •     Spring Boot 使配置简单 

  •     Spring Boot 使编码简单 

  •     Spring Boot 使部署简单 3.4Spring Boot 使监控简单

1.2 Springboot 配置方面

1. 修改内嵌web服务器的端口号的命令是什么?(因为特基础,最常问)

server:       port: 8888

2. SpringBoot 如何进行自定义属性配置

// 在配置文件中定义test: Hello World// 然后在代码中以 @Value 接收@Value("${test}")private String test;    
3. 配置的变量之间怎么进行引用
// 在配置变量间使用 ${变量名} 进行引用test: Hello msg: ${test} World// 然后在代码中以 @Value 接收@Value("${msg}")private String msg;
4. 配置的变量如何配置成随机值
// 使用random 进行随机变量的配置// 注意,只生成一次 ,巨坑,会特意问你这个num: ${random.int}
5. 配置随机端口号,也是常问的,因为在spring cloud 中这个端口一般是随机的
server:      port: ${random.int[1024,9999]}
6. Spring Boot配置文件你一般使用什么    使用 yml 配置文件,因为是 Spring Boot 中新增的一种配置文件格式。特点:具备天然的树状结构7. 能说说 yml 和 properties 文件的区别吗
  •     配置文件的扩展名有变化 

  •     配置文件中的语法有变化

8. 接上一题,一般他会就问你,能说说yml文件的语法吗?

  • 在 properties 文件中是以“.”进行分割,在 yml 中使用“:” 进行分割 

  • yml 的数据格式和 json 的格式很像,是通过“:”赋值 

  • 在 yml 中缩进一定不能使用 TAB 键,否则会报错。

  • 每个 K 的冒号后面一定要加一个空格

9. 你知道多环境配置吗?如何进行配置

// profile:代表的就是一个环境变量// 语法结构就是 application-{profile}.properties// application-dev.properties 开发环境 // application-test.properteis 测试环境 // application-prod.properteis 生产环境
10. 可以讲一讲Spring Boot的自动配置原理吗?
// 首先在Springboot启动的时候加载主配置类,并且开启了@EnableAutoConfiguration// 然后@EnableAutoConfiguration的作用是利用AutoConfigurationImportSelector给容器中导入一些组件。// 通过protected List getCandidateConfigurations(AnnotationMetadata metadata,AnnotationAttributes attributes)获取候选的配置,这个是扫描所有jar包类路径下"META-INF/spring.factories";// 然后把扫描到的这些文件包装成Properties对象。// 从properties中获取到EnableAutoConfiguration.class类名对应的值,然后把他们添加在容器中。// 整个过程就是将类路径下"META-INF/spring.factories"里面配置的所有EnableAutoConfiguration的值加入到容器中。
1.3 Springboot 常用注解1. 一般就会问如下几个注解,别的基本上和Spring相似
  • @SpringBootApplication:代表是 SpringBoot 的启动类。

  • @SpringBootConfiguration:通过 bean 对象来获取配置信息

  • @Configuration:通过对 bean 对象的操作替代 spring 中 xml 文件

  • @EnableAutoConfiguration:完成一些初始化环境的配置

  • @ComponentScan:来完成 spring 的组件扫描

  • @RestController :表示当前这个 Controller 下的所有的方法都会以       json 格式的数据响应。

1.4 Springboot 处理异常

1. 怎么使用Springboot 处理异常

    使用 @ControllerAdvice 和 @ExceptionHandler 注解处理异常

// 代码类似下面@ControllerAdvice public class MyControllerAdvice {       @ResponseBody       @ExceptionHandler(value=java.lang.Exception.class)       public Map myException(Exception ex) {       Map map = new HashMap<>();       map.put("code", 500);       map.put("msg", "出错了。");       return map;       }}

1.5 Springboot 如何解决跨域

        跨域可以在前端通过 JSONP 来解决,但是 JSONP 只可以发送 GET 请求,无法发送其他类型的请求,在 RESTful 风格的应用中,就显得非常鸡肋,因此我们推荐在后端通过 (CORS,Cross-origin resource sharing) 来解决跨域问题。这种解决方案并非 Spring Boot 特有的,在传统的 SSM 框架中,就可以通过 CORS 来解决跨域问题,只不过之前我们是在 XML 文件中配置 CORS ,现在可以通过实现WebMvcConfigurer接口然后重写addCorsMappings方法解决跨域问题。

// 代码类似下方@Configurationpublic class CorsConfig implements WebMvcConfigurer {    @Override    public void addCorsMappings(CorsRegistry registry) {        registry.addMapping("/**")                .allowedOrigins("*")                .allowCredentials(true)                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")                .maxAge(3600);    }}

1.x 其它

1. 说说Springboot的启动器都可以放在什么位置

    启动器存放的位置。启动器可以和 controller 位于同一个包下,或者位于     controller 的上一级 包中,但是不能放到 controller 的平级以及子包下。

2. Springboot 如何进行热部署    在pom.xml中添加如下插件
    org.springframework.boot    spring-boot-devtools
3. Springboot 的Starter是什么?    Spring Boot 中的starter 只不过是把我们某一模块,比如web 开发时所需要的所有JAR 包打包好给我们而已。不过它的厉害之处在于,能自动把配置文件搞好,不用我们手动配置。4. Springboot 打包是Jar包还是War包        Spring Boot 项目最终打包成的 jar 是可执行 jar ,这种 jar 可以直接通过 java -jar xxx.jar 命令来运行,这种 jar 不可以作为普通的 jar 被其他项目依赖,即使依赖了也无法使用其中的类。5. Springboot 需要容器运行吗     不需要     内置了 Tomcat/ Jetty 等容器。  6. 你用过Spring Boot 的定时任务吗
  • 定时任务也是一个常见的需求,Spring Boot 中对于定时任务的支持主要还是来自 Spring 框架。
  • 在 Spring Boot 中使用定时任务主要有两种不同的方式,一个就是使用 Spring 中的 @Scheduled 注解,另一个则是使用第三方框架 Quartz。
  • 使用 Spring 中的 @Scheduled 的方式主要通过 @Scheduled 注解来实现。
  • 使用 Quartz ,则按照 Quartz 的方式,定义 Job 和 Trigger 即可。

c7886ecb9e70ea3209e8d8c0c7f9d7e1.png