Springboot
小小平不平凡
这个作者很懒,什么都没留下…
展开
-
SpringBoot中普通类与注入容器的类获取容器其他bean的方法
一、普通类获取Spring容器中bean的方法在Spring框架中,是无法在普通类中通过注解方式获取容器中的实例bean的。如果我们需要在普通类中获取Spring容器中的实例,就需要一些其他手段了。SpringBoot工程在普通类中获取Sping容器实例的方法,其原理和传统方法其实都是一样的,都是通过获取上下文环境,从上下文环境中拿到Spring容器管理的实例springUtil类package com.umetrip.utils;import org.springframework.beans.原创 2021-08-31 19:22:25 · 1112 阅读 · 0 评论 -
SpringBoot项目实现启动后自动执行某些方法
一、背景介绍最近开发一个新项目,涉及许多定时任务。要求在每次项目重启时都要自动读取外部配置文件并自动地执行定时任务二、两种实现方式2.1 实现ApplicationRunner接口package org.config;import org.service.PushMessageService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.Applica原创 2021-08-31 18:43:07 · 637 阅读 · 1 评论 -
Maven中dependencyManagement标签的作用
一、作用使用dependencyManagement可以统一管理项目中依赖包的版本号,当需要变更版本号时只需在父pom中修改即可;如果某个子项目需要指定一个特殊的版本号时,只需要在自己项目的pom.xml中显示声明一个版本号即可,此时子项目会使用自己声明的版本号,而不继承父项目的版本号二、dependencyManagement与dependencies的区别dependencies相对于dependencyManagement,所有声明在dependencies里的依赖都会自动引入,并默认被所有的原创 2021-08-03 20:51:52 · 5522 阅读 · 0 评论 -
SpringTask介绍与实践
一、三种定时任务的实现方法Java自带的Api java.util.Timer类和java.util.TimerTask类Quartz开源框架,功能强大,使用起来稍显复杂Spring 3.0以后自带了task 调度工具,比Quartz更加的简单方便,除Spring相关的包外不需要额外的包,而且支持注解和配置文件两种形式二、SpringTask实践本篇文章不会介绍基于SpringTask的定时任务基本使用,主要会详细介绍动态更改cron表达式的实现方法。因为我在实际开发过程中需要通过平台能够动态原创 2021-07-30 16:41:24 · 497 阅读 · 0 评论 -
SpringBoot读取配置文件的顺序
一、简介SpringBoot中配置文件支持yml和properties两种格式。相应默认文件分别是application.yml和application.properties二、SpringBoot配置文件默认存放目录项目根目录下项目根目录下的config目录下项目的resources目录下项目resources目录中config目录下备注:如果同一个目录下,有application.yml也有application.properties,默认先读取application.proper转载 2021-07-19 14:32:50 · 404 阅读 · 0 评论 -
Springboot中读取yml配置文件方式
一、yml文件规则yml文件的好处,天然的树状结构,一目了然,实质上跟properties是差不多的不支持tab缩进,需要使用空格可以使用 “-小写字母” 或 “_小写字母” 来 代替 “大写字母”,如 userName 与 user-name ,user_name 含义是一样的key: value 格式书写,key 后面跟着冒号,再后面跟着一个空格,然后是值值的几种数据类型:普通的值(数字,字符串,布尔)age: 18name: mysgk对象、Map (属性和值) (键值对转载 2021-07-19 14:21:14 · 916 阅读 · 0 评论 -
项目代码中配置ActiveMQ的连接信息
一、背景介绍在实际项目开发中,我需要使用ActiveMQ消息队列来接收发送消息。我是Springboot工程,因此在 application.properties 文件中配置了连接ActiveMQ的信息,如下所示application.properties# 生产环境 mqspring.activemq.broker-url=tcp://10.223.94.20:61616spring.activemq.user=adminspring.activemq.password=admin#spri原创 2021-06-04 11:30:26 · 661 阅读 · 0 评论 -
Spring提供的Condition相关注解介绍
1、@ConditionalOnClass作用是:某个class位于类路径(classpath)上,才会实例化一个Bean2、@ConditionalOnBean作用是:仅仅在当前上下文中存在某个对象时,才会实例化一个Bean3、@ConditionalOnExpression作用是:表达式为true的时候,才会实例化一个Bean举例:@ConditionalOnExpression("true") @ConditionalOnExpression("${my.controller.e原创 2021-06-02 19:12:24 · 709 阅读 · 0 评论 -
基于Freemarker实现导出数据为word文档
整体流程1、pom.xml<!-- 引入freemarker模板引擎的依赖 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId></dependency>2、生成 .ftl 模版文件新建一个空的word文档,按照你预期的导出原创 2021-05-18 17:13:56 · 779 阅读 · 4 评论 -
Springboot中@RequestParam、@RequestBody和@ModelAttribute注解区别
修饰入参时的详细区别:@RequestParam:只支持基本数据类型,用于接收form表单参数或url参数@ModelAttribute:支持基本数据类型和对象类型,用于接收form表单参数或url参数并绑定到model中@RequestBody:支持基本数据类型和对象类型,用于接收json格式数据...原创 2021-04-16 13:23:41 · 932 阅读 · 0 评论 -
前端访问使用Tomcat启动的后端服务报跨域问题的解决办法
package com.test.chaosblade.config;import org.springframework.stereotype.Component;import javax.servlet.*;import javax.servlet.http.HttpServletResponse;import java.io.IOException;@Componentpublic class CorsFilter implements Filter { @Override原创 2021-03-29 15:26:21 · 708 阅读 · 0 评论 -
Logback configuration error detected的终极解决方案
今天在Springboot项目中替换log4j2日志的时候遇见的问题,闲话不多说错误日志Logging system failed to initialize using configuration from 'classpath:log4j2-dev.xml'java.lang.IllegalStateException: Logback configuration error detected: ERROR in ch.qos.logback.core.joran.spi.Interpreter转载 2021-03-29 15:18:25 · 2572 阅读 · 1 评论 -
IDEA编辑器启动使用外部tomcat的工程
1、点击“Edit”按钮2、选择“Templates-》Tomcat Server-》Local”3、切换至“Deployment”面板,通过修改Applacation context的值,改变请求地址的文根原创 2021-03-29 15:01:22 · 200 阅读 · 0 评论 -
Maven中scope标签的作用
compile:编译依赖范围(默认)。使用此依赖范围的Maven依赖,对于编译、测试、运行三种classpath都有效。典型的例子是spring-code,在编译、测试和运行的时候都需要使用该依赖。test: 测试依赖范围。使用此依赖范围的Maven依赖,只对于测试classpath有效,在编译主代码或者运行项目的使用时将无法使用此依赖。典型的例子是Jnuit,只有在编译测试代码及运行测试的时候才需要provided:已提供依赖范围。使用此依赖范围的Maven依赖,对于编译和测试classpath有效.原创 2021-03-29 14:52:21 · 128 阅读 · 0 评论 -
SpringBoot项目以war包形式部署至外部tomcat
步骤1:继承SpringBootServletInitializer外部容器部署的话,就不能依赖于Application的main函数了,而是要以类似于web.xml文件配置的方式来启动Spring应用上下文,此时我们需要在启动类中继承SpringBootServletInitializer并实现configure方法package com.test.chaosblade;import org.springframework.boot.SpringApplication;import org.sp转载 2021-03-28 23:01:54 · 298 阅读 · 0 评论 -
Springboot项目以war包形式部署到外部Tomcat
步骤1:继承SpringBootServletInitializer外部容器部署的话,就不能依赖于Application的main函数了,而是要以类似于web.xml文件配置的方式来启动Spring应用上下文,此时我们需要在启动类中继承SpringBootServletInitializer并实现configure方法package com.test.chaosblade;import org.springframework.boot.SpringApplication;import org.sp原创 2021-03-26 14:45:19 · 149 阅读 · 0 评论 -
SpringBoot中异步请求的使用
转载的博客:SpringBoot中异步请求的使用转载 2021-03-05 13:44:38 · 90 阅读 · 0 评论 -
Springboot接口的请求参数有多个,包括普通类型参数和@ReuqestBody修饰的参数,如何使用Postman调用
一、背景介绍使用别人开发的一个post接口,发现该接口请求参数有多个,并且其中一个参数是用@ReuqestBody注解修饰的。对于这种请求参数,使用postman时不知如何请求二、Postman不同接口的请求方式介绍2.1 接收Form表单数据2.1.1 参数使用@RequestParam注解修饰接口代码:package com.example.demo; import org.springframework.web.bind.annotation.PostMapping;import o转载 2021-03-05 11:21:49 · 9659 阅读 · 1 评论 -
Springboot工程使用第三方jar包中resources下的配置文件未生效问题
一、背景介绍有A、B、C三个Springboot Maven项目,也就是三个jar包,其中A项目中写了数据库底层mapper,被B和C中引用。为了方便,数据库的配置想直接写在A中的yaml文件,这样在B和C项目的yaml文件中就不必再写数据库连接信息了,但是测试发现在启动项目B的时候,没有读取到A项目yaml文件中的配置信息。二、问题产生原因A/B/C三个项目的yaml文件都是在自己项目的 resource 文件下面,在B引用了A的时候,相当于相同目录下有两个一模一样的yaml文件,此时B的yaml转载 2021-02-25 11:11:44 · 2034 阅读 · 0 评论 -
解决Springboot使用@Autowired注解注入的静态变量在使用时报空指针问题
一、背景介绍我创建了两个Springboot工程,A作为公共工程,打包成Jar包供其他工程使用;B使用A提供的Jar包。A工程中的SceneCaseDebugAPI类的代码如下:import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject;import com.jayway.jsonpath.JsonPath;import com.umetrip.qa.model.*;import com.umetrip原创 2021-02-25 10:51:23 · 1722 阅读 · 1 评论 -
Springboot实现动态设置定时任务
一、背景介绍在实际设计开发“测试集”功能的时候,为每一个测试集提供了一个定时任务cron表达式字段,代码需要实现将具备cron表达式的测试集动态加入到定时任务中,按cron表达式的规则定时执行测试集中的接口用例二、Springboot实现流程2.1 创建ScheduledConfig配置类package com.test.testmanagement.config;import com.test.testmanagement.controller.casemanagementcontroller原创 2021-02-18 10:21:13 · 1053 阅读 · 1 评论 -
Springboot工程打包上传至私服的方法
一、修改pom.xml文件,配置私服仓库地址pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0原创 2021-01-19 18:54:28 · 1258 阅读 · 0 评论 -
Springboot工程使用第三方Jar包遇到的问题及解决办法
一、背景介绍原创 2021-01-19 15:59:26 · 4033 阅读 · 0 评论 -
Springboot项目实现在主启动类启动后自动执行我们自定义的代码逻辑
一、问题背景开发一个Springboot项目,想在项目启动后,不采用接口调用的方式,就能立即执行我自定义的代码逻辑。二、解决办法针对上述情况,Springboot提供了 CommandLineRunner和ApplicationRunner 两种方式实现这种“开机自启”功能。CommandLineRunner、ApplicationRunner接口是在容器启动成功后的最后一步回调,这两种方法提供的 目的 是为了满足在 项目启动的时候立刻执行某些方法1、CommandLineRunner接口(1)建原创 2020-11-23 19:01:41 · 1295 阅读 · 0 评论 -
Maven项目pom.xml配置文件中packaging标签的使用
一、packaging标签可设置的值指定打包类型使用标签,它默认是 jar 类型1、pom 父类型都为pom类型,多用于微服务项目<packaging>pom</packaging>2、jar 内部调用或者是作服务使用<packaging>jar</packaging>3、war 打包项目,用于在容器(Tomcat、Jetty等)上部署<packaging>war</packaging> ...原创 2020-10-28 15:15:07 · 2919 阅读 · 0 评论 -
Springboot注解@RequestMapping中的produces和consumes的作用
一、producesproduces的作用是指定返回值类型和返回值编码使用示例1返回json数据,本示例可以省略produces属性,因为我们已经使用了注解@responseBody。@responseBody的作用也是设置返回值为json数据@Controller @RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, produces="application/json") @ResponseBody原创 2020-08-27 15:12:47 · 4578 阅读 · 0 评论 -
Springboot2.X 静态文件配置
应用场景开发一个Springboot项目,项目中包含前后端代码。将项目打成jar运行后,发现需要定时更新的静态文件无法被正确修改(原因:以jar包形式运行项目,jar包中的静态文件不能被修改)。为了解决这个问题,可以采用两种方式:(1)打成war包,使用外部tomcat部署;(2)还是以jar包形式部署项目,通过Springboot的静态资源配置,设置一个可访问的外部静态资源目录Springboot默认查找静态文件的顺序Springboot 默认会挨个从META/resources > res原创 2020-08-19 17:02:49 · 620 阅读 · 0 评论 -
Java中@SuppressWarnings(“unchecked“)注解的作用
一、简介java.lang.SuppressWarnings是J2SE5.0中标准的Annotation之一。可以标注在类、字段、方法、参数、构造方法,以及局部变量上注解的作用告诉编译器忽略指定的警告,不用在编译完成后出现警告信息使用方法@SuppressWarnings(“”)@SuppressWarnings({})@SuppressWarnings(value={})示例1:@SuppressWarnings(“unchecked”)告诉编译器忽略 unchecked 警告信息原创 2020-08-05 19:29:18 · 519 阅读 · 0 评论 -
Spring注解@Target @Retention @Documented @Inherited
参考实例@Target({ ElementType.PARAMETER, ElementType.METHOD })@Retention(RetentionPolicy.RUNTIME)@Documented@Inheritedpublic @interface SystemLog { boolean value() default true;}一、@Retention@Retention注解的作用是:表示被修饰的注解会被保留到哪个阶段RetentionPolicy.SOURCE:这原创 2020-08-04 20:02:55 · 838 阅读 · 0 评论 -
Springboot的logback-spring.xml配置
logback-spring.xml<?xml version="1.0" encoding="UTF-8"?><configuration scan="true" scanPeriod="60 seconds" debug="false"> <contextName>logback</contextName> <property name="log.path" value="/opt/applog/MskyLog/UmeAPI"原创 2020-07-27 19:06:16 · 485 阅读 · 0 评论 -
Spring中@interface的作用
@interface的作用是自定义一个新的注解例子:package com.self; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @Retention(RetentionPolicy.RUNTIME) public @interface MyTarget { }使用新定义的注解@MyTargetpackage com.self; import原创 2020-07-22 14:33:52 · 1544 阅读 · 0 评论 -
BeanFactory与FactoryBean的区别
区别BeanFactory(接口)是一个Factory。负责生产和管理bean。在Spring中,BeanFactory是IOC容器的核心接口,它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。BeanFactory只是个接口,并不是IOC容器的具体实现,但是Spring容器给出了很多种实现,如 DefaultListableBeanFactory、XmlBeanFactory、ApplicationContext等,其中XmlBeanFactory就是常用的一个,该实现将以XML转载 2020-07-21 23:15:33 · 116 阅读 · 0 评论 -
bean的作用范围与bean的生命周期
作用范围bean的作用范围取值有五种(scope属性控制):singleton:单例,也是默认值prototype: 多例,比如让Spring接管struts2的action的时候就必须配置此属性request: 一次请求以及此次请求的转发session: 作用范围是一次会话globalsession: 作用范围是一次全局绘画,比如多台服务器之间需要共用同一个bean的时候就需要此属性...转载 2020-07-21 22:49:36 · 411 阅读 · 0 评论 -
Springboot中@autowired和@resource注解的区别
@Autowired@Autowired是Spring提供的,默认按照byType 注入,也就是按bean的类型来传入。如果需要指定名字,那么需要使@Qualifier(“这是bean的名字”)@Resource@Resource默认按 byName 自动注入,是J2EE提供的@Resource有两个中重要的属性:name和type 。Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策转载 2020-07-12 22:40:55 · 5639 阅读 · 0 评论 -
Springboot中@Mapper和@Repository的区别
@Mapper和@Repository是常用的两个注解,两者都是用在dao层,两者功能差不多区别:@Repository需要在Spring中配置扫描地址,然后生成Dao层的Bean才能被注入到Service层中。如下,在启动类中配置扫描地址:@SpringBootApplication //添加启动类注解@MapperScan("com.xz.springboot.mapper") //配置mapper扫描地址public class application{ public sta转载 2020-07-12 22:34:02 · 2053 阅读 · 0 评论 -
Spring中@Bean与@Service注解区别
@Configuration和@Bean组合使用的目的与@Service相同,均可用来创建Bean。其中,@Configuration和@Bean注解主要是用在配置文件类中,@Service主要是用在实体类中@Configuration和@Bean组合使用的好处代码耦合性降低Bean的创建全部放在配置类中,接口及其实现逻辑完全和Bean创建无关单一职责@Bean仅用来创建Bean实例,而@service注解承担了两个职责:(1)创建Bean;(2)将一个类标识为一个服务更灵活使用@Bean的原创 2020-07-12 22:22:40 · 6140 阅读 · 0 评论 -
Spring的@Scheduled注解使用介绍
介绍注解@Scheduled 可以作为一个触发源添加到一个方法中,经常用于做定时任务举例以固定延迟时间5秒钟调用一次方法,这个周期是以上一次调用任务的完成时间为基准。即在上一个任务完成之后,延迟5s后再次执行方法@Scheduled(fixedDelay = 5000)public void test() {}以固定速率5s来调用一次方法,这个周期是以上一次调用任务开始时间为基准。即从上一个任务开始执行之后,隔5s再次调用该方法@Scheduled(fixedRate = 5000原创 2020-06-15 17:03:00 · 527 阅读 · 0 评论 -
Gson实现将Json字符串转为Map类型
Map<String,Object> map = new Gson().fromJson(jsonStr, new TypeToken<HashMap<String,Object>>(){}.getType());转载 2020-06-09 10:18:43 · 4715 阅读 · 0 评论 -
Springboot项目去除自动配置的方法
举例说明新建了一个springboot工程,运行程序时报错:Reason: Failed to determine a suitable driver class问题原因: 新工程中未进行数据源信息配置。如果去掉springboot工程相关自动配置,该问题就不会出现了解决办法:@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfigurat原创 2020-05-15 22:49:51 · 2623 阅读 · 0 评论 -
解决Springboot中websocket跨域问题
WebSocketConfig文件setAllowedOrigins()方法表示允许连接的域名,可实现websocket跨域访问package com.test.testmanagement.config;import org.springframework.context.annotation.Configuration;import org.springframework.messa...原创 2020-04-16 16:32:55 · 6031 阅读 · 1 评论