
Spring
文章平均质量分 54
wangooo
这个作者很懒,什么都没留下…
展开
-
spring resttemplate get请求支持body
pom中添加依赖<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.9</version></dependency>RestTemplate,默认用的 HttpComponentsClientHttpRequestF原创 2021-10-16 22:17:26 · 1362 阅读 · 0 评论 -
@RequestParam
@RequestParam 接收的参数是来自requestHeader中,即请求头。通常用于GET请求。1、findUser(String name)2、findUser(@RequestParam String name)3、findUser(@RequestParam("userName") String name)第一种如果没有name 参数不会报错,第二种没有name 参数会报错,(也可以设置required = false),第三种跟第二种的区别是name 参数换为user原创 2021-09-19 22:15:35 · 969 阅读 · 0 评论 -
vue 下载模版文件
从后台接口中返回的类型是 blobdownload() { let params = { } this.$axios({ method: 'get', responseType: 'blob', //防止返回乱码 url: this.baseUrl + '/download/template', params: params }).then.原创 2021-09-06 13:25:45 · 682 阅读 · 0 评论 -
Spring Boot 禁用 Swagger
一、使用@Profile使用注解@Profile({“dev”,“test”})表示在开发或测试环境开启,而在生产关闭。@Configuration@EnableSwagger2@Profile({"local", "dev"})public class SwaggerConfig { private String title; private String desc; private String version; private String gro原创 2021-08-31 10:41:15 · 928 阅读 · 0 评论 -
Spring Boot 的@ConditionalOnProperty注解
在Spring Boot的源码中,比如涉及到Http编码的自动配置、数据源类型的自动配置等大量的使用到了@ConditionalOnProperty的注解。@ConditionalOnProperty注解源码:@Retention(RetentionPolicy.RUNTIME)@Target({ ElementType.TYPE, ElementType.METHOD })@Documented@Conditional(OnPropertyCondition.class)public @原创 2021-08-28 14:31:01 · 378 阅读 · 0 评论 -
OpenFeign Feign Ribbon
OpenFeign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用Feign, 我们可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验。OpenFeign的前身是Feign,OpenFeign是SpringCloud在Feign的基础上支持了Spring MVC的注解,并通过动态代理的方式产生实现类来做负载均衡并进行调用其他服务。使用 Ribbon+RestTemplate 时,利用了RestTemplate对http请求的封装处理,形成了一套模版化的调用方法。在原创 2021-08-28 14:25:34 · 482 阅读 · 0 评论 -
feign启用httpclient、okhttp
openfeign 默认启用 httpclient。openfeign 默认启用 ribbon。所以从 openfeign的 ribbon 下的HttpClientFeignLoadBalancedConfiguration源码中可以看出。加了注解@ConditionalOnProperty,在没有配置feign.httpclient.enabled 时,默认为true。@ConditionalOnProperty( value = {"feign.httpclient.ena..原创 2021-08-28 11:05:50 · 2306 阅读 · 0 评论 -
feign 根据环境动态指定服务名
分布式系统中,网关层或应用层调用后端的微服务,大家普遍使用SpringCloud Feign去调用,过程简单方便。开发环境和测试环境共用一套nacos,通过服务提供方的serviceId加环境后缀作为区分,比如基础信息服务其开发环境serviceId为 baseinfo-dev,测试环境为 baseinfo-test。每次服务提供方发布的时候,会根据发布环境,手动的更改serviceId。消费方feign调用时,直接通过@FeignClient(name = "baseinfo-dev")转载 2021-08-27 10:50:37 · 10358 阅读 · 1 评论 -
Spring Boot 构建docker镜像,运行指定spring profile
1、pom.xml添加docker打包插件 <plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.3.6</version> <configuration> <repository>${project.artifactId}<转载 2021-08-26 20:40:35 · 4391 阅读 · 0 评论 -
Spring Boot 获取 spring.profiles.active
原理 1、实现ApplicationContextAware(当一个类实现了ApplicationContextAware这个接口之后,这个类就可以通过setApplicationContext方法获得ApplicationContext中的上下文),获取context。通过方法:context.getEnvironment().getActiveProfiles()获取激活的profile。 2、通过service中成员变量上的注解:@Value("${spring.profiles.acti转载 2021-08-26 21:48:46 · 18509 阅读 · 1 评论 -
Spring Boot日志框架 slf4j 与 log4j、logback
Spring Boot支持Log4j2、Lockback作为日志框架。如果你使用starters启动器,Spring Boot将使用Logback作为默认日志框架。spring-boot-starter启动器包含spring-boot-starter-logging启动器并集成了slf4j日志抽象及Logback日志框架。1.slf4j(Simple logging Facade for Java)它是把不同的日志系统的实现进行了具体的抽象化,只提供了统一的日志使用接口,使用时只需要按照转载 2021-08-26 10:49:51 · 712 阅读 · 0 评论 -
SpringCloud bootstrap.yml和application.yml 不同环境下的配置
在 Spring Boot 中有两种上下文,一种是 bootstrap,另外一种是 application。bootstrap 是系统级的资源配置项,application是用户级的资源配置项。boostrap 由父 ApplicationContext 加载,比 applicaton 优先加载。bootStrap 具有更高优先级,它不会被本地配置覆盖。bootstrap 主要用于负责从外部源加载配置属性并解析。这两个上下文共用一个环境,它是任何Spring应用程序的外部属性的来源。原创 2021-08-25 21:49:19 · 14973 阅读 · 0 评论 -
spring thread 更新数据库调用updateById报错
启动一个线程,每隔一段时间,调用外部接口后,将数据更新到数据库。public class RefAnalysisResultThread implements Runnable { private volatile boolean someCondition = true; private IAnalysisService analysisService; public RefAnalysisResultThread() { this.analysisSer原创 2021-07-27 17:26:01 · 5030 阅读 · 1 评论 -
mybatis-plus and or 复合查询
AND 嵌套例:and(i -> i.eq("name", "李白").ne("status", "活着"))--->and (name = '李白' and status <> '活着')OR 嵌套例:or(i -> i.eq("name", "李白").ne("status", "活着"))--->or (name = '李白' and status <> '活着')nested正常嵌套 不带 AND 或者 OR例...原创 2021-07-01 17:15:29 · 1773 阅读 · 0 评论 -
RestTemplate 超时值
使用Spring的RestTemplate时,默认的超时值是无限的。默认情况下,RestTemplate使用SimpleClientHttpRequestFactory,然后使用HttpURLConnection。默认情况下为HttpURLConnection的超时时间为0 - 即无限的,除非它已经被设置这些属性:-Dsun.net.client.defaultConnectTimeout=TimeoutInMiliSec -Dsun.net.client.defaultReadTimeou原创 2021-07-01 16:52:17 · 15280 阅读 · 2 评论 -
本地调试 服务长时间无反应 niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647
上午本地登录测试是正常的,下午就不正常了,报错:2021-07-01 14:15:34.202 INFO 1437 --- [ctor-http-nio-2] c.netflix.config.ChainedDynamicProperty : Flipping property: zc-ucenter-auth-service-wdev.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabili.原创 2021-07-01 14:31:35 · 7500 阅读 · 0 评论 -
@Slf4j 日志输出
当前日志为logback,在使用日志输出时,如果不想每次都写private final Logger logger = LoggerFactory.getLogger(当前类名.class);就可以用注解@Slf4j。(idea需装lombok插件)如果是基于SpringBoot,因为默认加入了Slf4j-api和logback的依赖,所以只需要添加lombok的依赖即可。类上面添加@Sl4j注解,然后使用log打印日志...原创 2021-05-23 22:20:36 · 442 阅读 · 0 评论 -
Spring RestTemplate发送请求时 自动对参数进行urlencode的问题
我们用Java开发项目时,发送请求都是用的RestTemplate。最近和其他部门合作时,我们需要请求他们的一个http接口。两边协议都确定好后,发现联调不通。后来发现是我们这边发出的请求,到达对方那边时,他们接收到的是经过了urlencode后的结果,通过wireshark抓包也看到确实发出的请求是被urlencode的。我们这边的进程,并没有显式调用urlencode相关的方法,因此猜测是RestTemplate自动给我们进行了urlencode。网上查找资料,发现这两篇文章讲得很详细:h.转载 2021-05-22 15:18:22 · 5895 阅读 · 0 评论 -
mybatis 类型转换器 LocalDateTimeTypeHandler
1、LocalDateTimeTypeHandler是mybatis实现的LocalDateTime与mysql日期类型的交互。2、无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从数据库中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成 Java 类型。3、默认的TypeHandlersTypeHandler类 java类型 数据库类型 BooleanTypeHan.转载 2021-04-25 14:13:43 · 5723 阅读 · 0 评论 -
@FeignClient 一个module里面多个client 其内部接口的地址不能一样
在一个module里面,定义了多个clientZBUpgradeClient 和 PBUpgradeClient添加了这两个cleint后,服务怎么也运行不起来他们分别继承于 ZBUpgradeControllerApi 和 PBUpgradeControllerApi@RequestMapping("/upgrade" )public interface ZBUpgradeRecordControllerApi { @ApiOperation(value = "") @原创 2021-03-19 16:21:06 · 475 阅读 · 0 评论 -
Spring Boot i18n国际化 MessageSource
转:https://www.jianshu.com/p/a354d3f849ecSpring 中对国际化文件支持的基础接口是MessageSource。一、SpringBoot中使用MessageSource国际化1. SpringBoot自动化配置国际化支持Spring Boot已经对i18n国际化做了自动配置,自动配置类为:org.springframework.boot.autoconfigure.context.MessageSourceAutoConfigura...转载 2021-03-02 21:23:35 · 14607 阅读 · 0 评论 -
Spring Boot ResponseBodyAdvice
转:https://www.cnblogs.com/gllegolas/p/12452841.htmlResponseBodyAdvice是spring4.1的新特性,其作用是在响应体写出之前做一些处理,比如,修改返回值、加密等。ResponseBodyAdvice接口是在Controller执行return之后,在response返回给浏览器或者APP客户端之前,执行的对response的一些处理。可以实现对response数据的一些统一封装或者加密等操作。该接口一共有两个方法:转载 2021-03-02 17:20:11 · 2226 阅读 · 0 评论 -
Spring Boot @ControllerAdvice全局异常捕获@Validated
转:https://blog.youkuaiyun.com/songguopeng/article/details/98961787SpringBoot提供了全局异常捕获注解@ControllerAdvice首先定义一个全局异常捕获类GlobalExceptionHandler,加上注解ControllerAdvice,如下在GlobalExceptionHandler类中定义了一个处理异常的方法handlerBindException主要看方法上的注解:@ExceptionHandler(Bin转载 2021-03-02 17:01:04 · 5210 阅读 · 1 评论 -
@ControllerAdvice和@RestControllerAdvice的区别
在Spring 3.2中,新增了@ControllerAdvice、@RestControllerAdvice 注解,可以用于定义@ExceptionHandler、@InitBinder、@ModelAttribute,并应用到所有@RequestMapping、@PostMapping、@GetMapping注解中。@ControllerAdvice是@Controller的一个增强版,可以实现三个方面的功能:全局异常处理、全局数据绑定、全局数据预处理。@ControllerAdvice .原创 2021-03-02 16:29:05 · 2016 阅读 · 1 评论 -
Spring Boot servlet context-path
server.context-path= # Context path of the application. 应用的上下文路径,也可以称为项目路径,是构成url地址的一部分。在每个module的application.properties文件都可以配置server.context-path这个属性。开始使用spring boot的时候没有注意这个属性,其实默认可以不配置,直接在controller层通过@RequestMapping来设定url的地址路径。|-- Context Path -.转载 2021-02-24 15:41:05 · 6292 阅读 · 0 评论 -
Spring boot @Value注解详解
Springboot通过@Value注解将配置文件中的属性注入到容器内组件中(可用在@Controller、@Service、@Configuration、@Component等Spring托管的类中)1.普通字符串注入例:yml中存在key:name: zs@Value注入@Value("${name}")public String name;当yml中的name没有对应值时,即yml中为:name:此时字符串name的值为""可设置注入属性的默认值(当配置文件.转载 2021-02-24 13:28:03 · 28778 阅读 · 1 评论 -
Spring Security OAuth2+JWT授权认证服务
添加依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.c转载 2021-02-24 12:50:35 · 270 阅读 · 0 评论 -
Spring Security OAuth2 JWT 自定义token携带的信息
oauth2在jwt仅支持用户名和权限。以下方法实现 token 中添加自定义的参数: 自定义 UserDetails public class CustomerDetails implements UserDetails { private String id; private String username; private String password; private Set<GrantedAuthority> authorities; pri.转载 2021-02-24 12:39:32 · 2603 阅读 · 1 评论 -
Spring Security 的 jwt 与 token+redis方案
1. 去中心化的JWT token优点:去中心化,便于分布式系统使用 基本信息可以直接放在token中。 username,nickname,role 功能权限信息可以直接放在token中。用bit位表示用户所具有的功能权限。缺点:服务端无法主动让token失效2. 中心化的 redis token / memory session等优点:服务端可以主动让token失效缺点:每次都要进行redis查询。占用redis存储空间。这里redis存储的是token的白名单。用户的其他.转载 2021-02-24 10:55:58 · 1634 阅读 · 0 评论 -
Spring Security OAuth2 实现使用JWT
https://yq.aliyun.com/articles/2633901、Maven 配置首先,我们需要在我们的pom.xml中添加spring-security-jwt依赖项。<dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-jwt</artifactId></dependenc转载 2021-02-24 10:47:47 · 752 阅读 · 0 评论 -
Spring Security OAuth2 RedisTokenStore 和 JwtTokenStore
区别 JWTTokenStore RedisTokenStore token信息,认证信息封装在JWT负载中 token信息,认证信息保存在Redis服务 token为加密的JWT负载 token为随机redis key 通过解密token获取用户认证信息 通过认证服务器校验token获取用户认证信息 优缺点 JWTTokenSt转载 2021-02-24 10:19:18 · 2453 阅读 · 0 评论 -
JWT (JSON Web Token)
转:https://www.cnblogs.com/cjsblog/p/9277677.htmlhttp://blog.leapoahead.com/2015/09/06/understanding-jwt/1. JSON Web Token是什么JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。2. JSON Web Token的结构是什么样的JSON Web Token由三部分组成,它们之间用圆点(..转载 2021-02-23 19:58:03 · 169 阅读 · 0 评论 -
RestTemplate
传统情况下在java代码里访问restful服务,一般使用HttpClient。不过此种方法使用起来太过繁琐。spring提供了一种简单便捷的模板类来进行操作,这就是RestTemplate。RestTemplate 是从 Spring3.0 开始支持的一个 HTTP 请求工具,它提供了常见的REST请求方案的模版,例如 GET 请求、POST 请求、PUT 请求、DELETE 请求以及一些通用的请求执行方法 exchange 以及 execute。RestTemplate 继承自 Interce.转载 2021-02-23 14:09:37 · 142 阅读 · 0 评论 -
Spring Security Oauth2配置类AuthorizationServerConfigurerAdapter
AuthorizationServerConfigurerAdapter中:ClientDetailsServiceConfigurer:用来配置客户端详情服务(ClientDetailsService),客户端详情信息在这里进行初始化,你能够把客户端详情信息写死在这里或者是通过数据库来存储调取详情信息。 AuthorizationServerSecurityConfigurer:用来配置令牌端点(Token Endpoint)的安全约束. AuthorizationServerEndpointsC转载 2021-02-23 11:37:38 · 18290 阅读 · 2 评论 -
AuthorizationServerConfigurerAdapter 与 WebSecurityConfigurerAdapter
One thing first. OAuth 2 is an authorization framework. It allows an application (client) to obtain limited access to a HTTP service on behalf of a resource owner (user). OAuth 2 is not an authentication protocol.AuthorizationServerConfigurerAdapteris u.转载 2021-02-22 21:15:34 · 3474 阅读 · 1 评论 -
@Autowired与@Resource
相同点:@Resource的作用相当于@Autowired,均可标注在字段或属性的setter方法上。不同点:(1)提供方:@Autowired是由org.springframework.beans.factory.annotation.Autowired提供,换句话说就是由Spring提供;@Resource是由javax.annotation.Resource提供,即J2EE提供,需要JDK1.6及以上。(2)注入方式:@Autowired只按照byType 注入;@Resource默认转载 2021-02-22 20:34:09 · 263 阅读 · 0 评论 -
Spring Security 自定义配置 WebSecurityConfigurerAdapter
在添加了@EnableWebSecurity注解后,如果需要自定义一些配置,则需要和继承WebSecurityConfigurerAdapter后,覆盖某些方法。我们来看一下WebSecurityConfigurerAdapter中哪些方法可以重写,需要重写。(1)WebSecurity默认是一个空方法,一般也不会再重写。 public void configure(WebSecurity web) throws Exception { }(2)HttpSecurity默认转载 2021-02-22 11:26:58 · 4866 阅读 · 0 评论 -
Spring Security 自动配置介绍及源码分析
在 SpringBoot 中,只要你加入 spring-boot-starter-security 包到项目中,即使不配置 @EnableWebSecurity 和 WebSecurityConfigurerAdapter,SpringBoot 也会自动给我们添加这两个配置。具体可以看 SpringBootWebSecurityConfiguration及WebSecurityEnablerConfiguration。/** * The default configuration for web转载 2021-02-22 11:13:21 · 589 阅读 · 0 评论 -
Spring Security Config : 注解 EnableWebSecurity 启用Web安全
@EnableWebSecurity是Spring Security用于启用Web安全的注解。典型的用法是该注解用在某个Web安全配置类上(实现了接口WebSecurityConfigurer或者继承自WebSecurityConfigurerAdapter)。典型的使用例子如下 : @Configuration @EnableWebSecurity public class MyWebSecurityConfiguration extends WebSecurityConfigurer...转载 2021-02-22 10:21:22 · 6730 阅读 · 0 评论 -
Spring Security Oauth2 ResourceServerConfigurerAdapter (资源服务器配置)
ResourceServerConfigurerAdapter (资源服务器配置)内部关联了ResourceServerSecurityConfigurer 和 HttpSecurity。前者与资源安全配置相关,后者与http安全配置相关 @Override public void configure(ResourceServerSecurityConfigurer resources) { //resourceId 用于分配给可授予的clientId转载 2021-02-21 21:47:05 · 14526 阅读 · 0 评论