202010-09 java spring整合junit操作(有详细的分析过程) 此博客解决了什么问题:解决测试的时候代码冗余的问题,解决了测试工程师的编码能力可能没有开发工程师编码能力的问题,解决了junit单元测试和spring注解相结合!测试类代码:(只给大家展示测试类的代码)publicclassAccountServiceTest{@TestpublicvoidtestFindAll(){//1.获取容器ApplicationContextac=newClassPathXmlApplicationContext("bean.xml");//2.得到业务层对象IAccountServiceas=ac.getBean("accoun... 继续阅读 >
202010-09 Spring Boot自定义favicon实现方法实例解析 自定义欢迎页SpringBoot项目在启动后,首先会去静态资源路径下查找index.html作为首页文件,若查找不到,则会去查找动态的index文件作为首页文件。例如,如果想使用静态的index.html作为首页,那么只需在resources/static目录下创建index.html文件即可。若想使用动态页面作为项目首页,则需在resources/templates目录下创建index.html(使用Thymeleaf模板)或者index.ft!(使用FreeMarker模板),然后在Controller中返... 继续阅读 >
202010-09 Spring JdbcTemplate整合使用方法及原理详解 基本配置JdbcTemplate基本用法实际上很简单,开发者在创建一个SpringBoot项目时,除了选择基本的Web依赖,再记得选上Jdbc依赖,以及数据库驱动依赖即可,如下:项目创建成功之后,记得添加Druid数据库连接池依赖(注意这里可以添加专门为SpringBoot打造的druid-spring-boot-starter,而不是我们一般在SSM中添加的Druid),所有添加的依赖如下:<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-star... 继续阅读 >
202010-09 Spring Cache整合Redis实现方法详解 导入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>基本配置spring.redis.port=638... 继续阅读 >
202010-09 Spring Security基于数据库实现认证过程解析 创建数据库SETFOREIGN_KEY_CHECKS=0;--------------------------------Tablestructureforrole------------------------------DROPTABLEIFEXISTS`role`;CREATETABLE`role`(`id`int(11)NOTNULLAUTO_INCREMENT,`name`varchar(32)DEFAULTNULL,`nameZh`varchar(32)DEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=4DEFAULTCHARSET=utf8;--------------------------------Record... 继续阅读 >
202010-09 SpringSecurity如何实现配置单个HttpSecurity 一、创建项目并导入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>二、相关配置和代码在创建完项目时,我们得springboot项目所有接口都被保护起来了,如果要想访问必须登陆,用户名默认是user,密码在项目启动时生成在... 继续阅读 >
202010-09 Spring Security基于json登录实现过程详解 主要是重写attemptAuthentication方法导入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>相关配置和代码application.properties配置密码spring.security.user.name=adminspring.security.user.password=123创建自定义身... 继续阅读 >
202010-09 Spring Security角色继承实现过程解析 在SecurityConfig中加入@BeanRoleHierarchyroleHierarchy(){RoleHierarchyImplroleHierarchy=newRoleHierarchyImpl();Stringhierarchy="ROLE_adb>ROLE_admin\nROLE_admin>ROLE_user";roleHierarchy.setHierarchy(hierarchy);returnroleHierarchy;}在SpringBoot2.08版本的时候是以下写法用空格把ROLE_dba>ROLE_admin和ROLE_admin>ROLE_user分开SpringBoot2.0.8(不含)之后得版本用\n来区分root角色... 继续阅读 >
202010-09 详解用Spring Boot Admin来监控我们的微服务 1.概述SpringBootAdmin是一个Web应用程序,用于管理和监视SpringBoot应用程序。每个应用程序都被视为客户端,并注册到管理服务器。底层能力是由SpringBootActuator端点提供的。在本文中,我们将介绍配置SpringBootAdmin服务器的步骤以及应用程序如何集成客户端。2.管理服务器配置由于SpringBootAdminServer可以作为servlet或webflux应用程序运行,根据需要,选择一种并添加相应的SpringBootStarter。在此示例中,我们... 继续阅读 >
202010-09 spring boot+redis 监听过期Key的操作方法 前言:在订单业务中,有时候需要对订单设置有效期,有效期到了后如果还未支付,就需要修改订单状态。对于这种业务的实现,有多种不同的办法,比如:1、使用querytz,每次生成一个订单,就创建一个定时任务,到期后执行业务代码;2、rabbitMq中的延迟队列;3、对Redis的Key进行监控; 1、引入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></... 继续阅读 >
202010-09 Spring Cloud Gateway重试机制原理解析 重试,我相信大家并不陌生。在我们调用Http接口的时候,总会因为某种原因调用失败,这个时候我们可以通过重试的方式,来重新请求接口。生活中这样的事例很多,比如打电话,对方正在通话中啊,信号不好啊等等原因,你总会打不通,当你第一次没打通之后,你会打第二次,第三次…第四次就通了。重试也要注意应用场景,读数据的接口比较适合重试的场景,写数据的接口就需要注意接口的幂等性了。还有就是重试次数如果太多的话会导致请求... 继续阅读 >
202010-09 Spring Boot Async异步执行任务过程详解 异步调用就是不用等待结果的返回就执行后面的逻辑,同步调用则需要等带结果再执行后面的逻辑。通常我们使用异步操作都会去创建一个线程执行一段逻辑,然后把这个线程丢到线程池中去执行,代码如下:ExecutorServiceexecutorService=Executors.newFixedThreadPool(10);executorService.execute(()->{try{//业务逻辑}catch(Exceptione){e.printStackTrace();}finally{}});这样的方式看起来没那么优雅... 继续阅读 >
202010-09 Spring Boot配置读取实现方法解析 SpringBoot里面所有的配置信息都放在application.properties中,如果我们想读取配置中的值要怎么做呢?还需要自己写个读取属性文件的工具类吗?完全不要,我们可以通过各种方式来读取里面的值。当然写工具类也是一种方式,只是太麻烦了,既然SpringBoot中有封装好的实现,为什么不用。Environment方式读取框架中有一个org.springframework.core.env.Environment类,可以读取application.properties中配置的值。用法如下,我们可... 继续阅读 >
202010-09 Spring Cloud Feign统一设置验证token实现方法解析 我们也在zuul中通过前置过滤器来统一设置token,其实还漏掉了一种,那就是业务服务调用业务服务的时候,是没有zuul这种前置过滤器的,那么我们该如何设置呢?其实也挺简单的,因为我们服务之前的调用是依赖于Feign的,我们可以从Feign上来做文章。如果你仔细看过Feign的文档的话,肯定会注意到下面一段代码:staticclassDynamicAuthTokenTarget<T>implementsTarget<T>{publicDynamicAuthTokenTarget(Class<T>clazz,... 继续阅读 >
202010-09 Spring jdbc具名参数使用方法详解 在jdbc的模板中使用具名参数:1、就需要在之前的jdbc的例子中进行修改;需要在xml文件中重新配置一个bean。这是固定的格式。如下对于使用具名参数而言。配置NamedParameterJdbcTemplate,该对象可以说使用具名参数。其没有无参数的构造器。所以必须为其构造器指定参数。2、之后在test的稳健者哄。得到bean的对象。之后进行测试。具体的代码示例如下;主要的区别是在sql语句的后边value中不在是问号。而是一下名字。之后通过map进行... 继续阅读 >
202010-09 Spring纯注解配置实现代码示例解析 问题我们发现,之所以我们现在离不开xml配置文件,是因为我们有一句很关键的配置:<!--告知spring框架在,读取配置文件,创建容器时,扫描注解,依据注解创建对象,并存入容器中--><context:component-scanbase-package="com.itheima"></context:component-scan>如果他要也能用注解配置,那么我们就离脱离xml文件又进了一步。另外,数据源和JdbcTemplate的配置也需要靠注解来实现。<!--配置dbAssit--><beanid="dbAssi... 继续阅读 >