为了保证浏览器的安全,不同源的客户端脚本在没有明确授权的情况下, 不能读写对方资源这叫做同源, 同源策略是浏览器的安全基石
如果一个请求地址里面协议, 域名和端口号都相同,就属于同源
在同源策略下,非同源的网站之间发送AJAX请求,如有需要,可通过降域或其他技术实现
cors(Crosss-OriginResource Sharing) ,CORS可以在不破坏既有规则的情况下,通过后端服务器实现
CORS接口, 从而实现跨域通行,CORS将请求分为两类:简单请求和非简单请求,分别对跨域通信提供了支持
21: 简单请求
在CROS之前, 发送>
BeetSql是一个全功能DAO工具, 同时具有Hibernate 优点 & Mybatis优点功能,适用于承认以SQL为中心,同时又需求工具能自动能生成大量常用的SQL的应用。
beatlsql 优点
引入依赖
这几个依赖都是必须的。
整合阶段
由于springboot没有对 beatlsql的快速启动装配,所以需要我自己导入相关的bean,包括数据源,包扫描,事物管理器等。
在application加入以下代码:
在resouces包下,加META_INF文件夹,文件夹中加入spring-devtoolsproperties:
restartincludebeetl=/beetl-232jar
restartincludebeetlsql=/beetlsql-231jar
在templates下加一个indexbtl文件。
加入jar和配置beatlsql的这些bean,以及resources这些配置之后,springboot就能够访问到数据库类。
举个restful的栗子
初始化数据库的表
bean
数据访问dao层
接口继承BaseMapper,就能获取单表查询的一些性质,当你需要自定义sql的时候,只需要在resouses/sql/accountmd文件下书写文件:
其中“=== ”上面是唯一标识,对应于接口的方法名,“ ”后面是注释,在下面就是自定义的sql语句,具体的见官方文档。
web层
这里省略了service层,实际开发补上。
通过postman 测试,代码已全部通过。
个人使用感受,使用bealsql做了一些项目的试验,但是没有真正用于真正的生产环境,用起来非常的爽。但是springboot没有提供自动装配的直接支持,需要自己注解bean。另外使用这个orm的人不太多,有木有坑不知道,在我使用的过程中没有遇到什么问题。另外它的中文文档比较友好。
不知道你的两个项目连的是不是同一个数据库,如果是同一个数据库的话可以放进去数据库中,另一个项目去数据库读取
或者两个项目在同一台服务器的话可以放在内存中,然后去读,比如用redis
1新建一个Spring Boot应用,命名为config-client(随意)
2编辑pomxml,主要依赖内容如下:
3创建 bootstrapproperties 文件,配置服务的基本信息和配置中心服务端信息
springapplicationname :对应配置文件规则中的 {application}
springcloudconfigprofile :对应配置文件规则中的 {profile}
springcloudconfiglabel :对应配置文件规则中的
springapplicationuri :配置中心的地址 4创建TestController 使用 @Value 绑定配置服务中配置的属性,也可以使用Environment对象来获取配置属性。 启动config-server、config-client访问: >
假设实现一个注册用户的功能,在controller 层,他会先进行校验参数,如下:以上代码有什么问题嘛? 其实没什么问题,就是校验有点辣眼睛
。正常的添加用户业务还没写,参数校验就一大堆啦。假设后来,又接了一个需求:编辑用户信息。实现编辑用户信息前,也是先校验信息,如下:我们可以使用注解的方式,来进行参数校验,这样代码更加简洁,也方便统一管理。实际上, spring boot 有个 validation 的组件,我们可以拿来即用。引入这个包即可:
引入包后,参数校验就非常简洁啦,如下:
然后在 UserParam 参数对象中,加入 @Validated 注解哈,把错误信息接收到 BindingResult 对象,代码如下:
如果你在你们项目代码中,看到controller 层报文返回结果,有这样的:
也有这样的:
显然,如果接口返回结果不统一,前端处理就不方便,我们代码也不好维护。再比如有的人喜欢用 Result 处理结果, 有点人
喜欢用 Response 处理结果,可以想象一下,这些代码有多乱。所以作为后端开发,我们项目的响应结果,需要 统一标准的返回格式
。一般一个标准的响应报文对象,都有哪些属性呢?响应状态码一般用枚举表示哈:
因为返回的数据类型不是确定的,我们可以使用泛型,如下:
有了统一的响应体,我们就可以优化一下controller 层的代码啦:
日常开发中,我们一般都是自定义统一的异常类,如下:
在controller 层,很可能会有类似代码:
这块代码,没什么问题哈,但是如果 trycatch 太多,不是很优雅。
可以借助注解 @RestControllerAdvice ,让代码更优雅。 @RestControllerAdvice 是一个应用于 Controller 层的切面注解,它一般配合 @ExceptionHandler 注解一起使用,作为项目的全局异常处理。我们来看下demo代码哈。
还是原来的 UserController ,和一个会抛出异常的userService的方法,如下:
我们再定义一个全局异常处理器,用 @RestControllerAdvice 注解,如下:
我们有想要拦截的异常类型,比如想拦截 BizException 类型,就新增一个方法,使用 @ExceptionHandler 注解修饰,如下: Redis是一个nosql数据库,可以存储key-value值。因为其底层实现中,数据读写是基于内存,速度非常快,所以常用于缓存;进而因其为独立部署的中间件,常用于分布式缓存的实现方案。常用场景有:缓存、秒杀控制、分布式锁。虽然其是基于内存读写,但底层也有持久化机制;同时具备集群模式;不用担心其可用性。关于Redis的使用,可以参考《Redis的使用方法、常见应用场景》以上就是关于Springboot实现跨域请求全部的内容,包括:Springboot实现跨域请求、SpringBoot Controller接收参数的几种常用注解方式、Spring Boot教程第5篇:beatsql等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
原文地址: http://outofmemory.cn/web/9469418.html
评论列表(0条)