SpringBoot 二次总结补充

第一章:https://blog.csdn.net/fine_Ning/article/details/106483096

SpringBoot的常用组件

Springboot提供了非常多以spring-boot-starter-*开头的开箱即用的工具包,常见工具包有以下一些:

组件说明
spring-boot-starter核心的工具包,提供了自动配置的支持,日志和YAML配置支持
spring-boot-starter-activemq针对快速集成ActiveMQ的工具包
spring-boot-starter-aop提供了快速集成SpringAOP和AspectJ的工具包
spring-boot-starter-data-redis提供了快速集成Redis和Jedis的工具包
spring-boot-starter-freemarker提供了快速集成Freemarker的工具包
spring-boot-starter-mail提供了快速集成邮件发送的工具包
spring-boot-starter-test提供了对Springboot应用的测试工具包
spring-boot-starter-web提供了对web开发的工具包,包括基于SpringMVC的RESTful应用开发,内置的tomcat服务器等
spring-boot-starter-actuator提供了对生产环境中应用监控的工具包
spring-boot-starter-logging提供了对日志的工具包,默认使用Logback

SpringBoot参数配置

参数来源

  1. 命令行启动项目时传入的参数, 如: java -jar xxx.jar --server.port=80
  2. application.properties或者YAML文件

一般用的比较多的就是直接在application.properties或者YAML配置 , 其次是命令行启动方式

参数加载顺序

1,命令行参数;
2,ServletConfig和ServletContext;
3,操作系统环境变量;
4,application-{profile}.properties或者YAML文件;
5,application.properties或者YAML文件;

配置文件语法

application.properties语法

server.port=80  
server.session-timeout=30  
server.tomcat.uri-encoding=UTF-8  
  
spring.datasource.url = jdbc:mysql://localhost:3306/crm
spring.datasource.username = root  
spring.datasource.password = mymysql  
spring.datasource.driverClassName = com.mysql.jdbc.Driver  

vs

application.yml语法

server:  
  port: 80
  session-timeout: 30  
  tomcat.uri-encoding: UTF-8  
  
spring:  
  datasource:  
    url : jdbc:mysql://localhost:3306/crm  
    username : root  
    password : mymysql  
    driverClassName : com.mysql.jdbc.Driver

application.properties优先级

一个项目中可以有多个application.properties文件存放在不同目录中,此时他们会遵循固定的优先级来处理有冲突的属性配置。

配置文件的放置位置,可以在上面的四个位置,优先级如上图标号。一般都在classpath:application.properties做配置,其他方式不使用。

总结问题

注解 RequestMapping 和 GetMapping 的不同之处

  • RequestMapping 具有类属性的,可以进行 GET,POST,PUT 或者其它的注释中具有的请求方法。
  • GetMapping 是 GET 请求方法中的一个特例。它只是 ResquestMapping 的一个延伸,目的是为了提高清晰度

Spring Boot 的自动配置是如何实现的?

Spring Boot 项目的启动注解是:@SpringBootApplication,其实它就是由下面三个注解组成的:

@Configuration

@ComponentScan

@EnableAutoConfiguration

其中 @EnableAutoConfiguration 是实现自动配置的入口,该注解又通过 @Import 注解导入了AutoConfigurationImportSelector,在该类中加载 META-INF/spring.factories 的配置信息。然后筛选出以 EnableAutoConfiguration 为 key 的数据,加载到 IOC 容器中,实现自动配置功能!

Spring Boot 如何设置支持跨域请求?

现代浏览器出于安全的考虑, HTTP 请求时必须遵守同源策略,否则就是跨域的 HTTP 请求,默认情况下是被禁止的,IP(域名)不同、或者端口不同、协议不同(比如 HTTP、HTTPS)都会造成跨域问题。

一般前端的解决方案有:

使用 JSONP 来支持跨域的请求,JSONP 实现跨域请求的原理简单的说,就是动态创建<script>标签,然后利用<script>的 SRC 不受同源策略约束来跨域获取数据。缺点是需要后端配合输出特定的返回信息。

利用反应代理的机制来解决跨域的问题,前端请求的时候先将请求发送到同源地址的后端,通过后端请求转发来避免跨域的访问。

后来 HTML5 支持了 CORS 协议。CORS 是一个 W3C 标准,全称是”跨域资源共享”(Cross-origin resource sharing),允许浏览器向跨源服务器,发出 XMLHttpRequest 请求,从而克服了 AJAX 只能同源使用的限制。它通过服务器增加一个特殊的 Header[Access-Control-Allow-Origin]来告诉客户端跨域的限制,如果浏览器支持 CORS、并且判断 Origin 通过的话,就会允许 XMLHttpRequest 发起跨域请求。

前端使用了 CORS 协议,就需要后端设置支持非同源的请求,Spring Boot 设置支持非同源的请求有两种方式。

第一,配置 CorsFilter。

@Configuration
public class GlobalCorsConfig {    
    @Bean    
    public CorsFilter corsFilter() {        
        CorsConfiguration config = new CorsConfiguration();          
        config.addAllowedOrigin("*");          
        config.setAllowCredentials(true);         
        config.addAllowedMethod("*");          
        config.addAllowedHeader("*");          
        config.addExposedHeader("*");        
        UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();     
        configSource.registerCorsConfiguration("/**", config);        
        return new CorsFilter(configSource);    
    }
}

需要配置上述的一段代码。第二种方式稍微简单一些。

第二,在启动类上添加:

public class Application extends WebMvcConfigurerAdapter {     
    @Override      
    public void addCorsMappings(CorsRegistry registry) {          
        registry.addMapping("/**")                  
                .allowCredentials(true)                  
                .allowedHeaders("*")                  
                .allowedOrigins("*")                  
                .allowedMethods("*");      
    }  
}  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小云很优秀

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

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

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

打赏作者

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

抵扣说明:

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

余额充值