CWIKIUS
  • 首页
  • 计算科学
  • 房地产
  • 文化旅游
  • 项目和网站
    • OSSEZ 计算技术
    • USRealEstate 社区
    • 地区文化
    • CWIKI.US
    • BUG.OSSEZ.COM
    • RSS.OSSEZ.COM
Spring
Spring

Spring boot 的彩色日志

我们基本上都知道 Spring 使用的是 logback 为日志配置的。 如果在你的项目中启用了你自己定义的 logback.xml 配置的话,本来是彩色的日志输出就变成黑白色了。 瞬间感觉有点没那么好看了,有没有什么办法让 Spring 在自己的项目中的日志输出也输出彩色呢?     如何修改配置 其实需要修改的地方有几个,但是都是比较简单的修改。 你只需要配置下就行了。 application.properties 在上面的配置文件中添加下面的配置: spring.output.ansi.enabled=always 这里如果不配置的话,你的日志系统中将不会显示为彩色的日志。 如果你使用的 application.yml 为配置文件的话。 你的配置文件应该看起来如下: spring: output: ansi: enabled: always logback.xml 你项目中的 logback.xml 配置文件。 首先需要 include 下面的资源到 logback.xml 这个配置文件上面。 <include resource="org/springframework/boot/logging/logback/defaults.xml" /> 然后在输出的 pattern 中,使用下面的配置 <pattern>${CONSOLE_LOG_PATTERN}</pattern> 这样你的控制台就可以输出彩色的配置了。 这样配置的原因很简单,因为 CONSOLE_LOG_PATTERN 这个参数是在资源 org/springframework/boot/logging/logback/defaults.xml 中定义的。 具体定义的内容为: <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> 你可以访问下面的链接来查看官方的配置: https://github.com/spring-projects/spring-boot/blob/master/spring-boot-project/spring-boot/src/main/resources/org/springframework/boot/logging/logback/defaults.xml   我们可以在这里直接引用在官方配置属性配置就可以了,这样你的配置文件就可以输出为彩色的日志了。   如上图,我们可以看到输出的彩色日志。   https://www.ossez.com/t/spring-boot/565

2020年10月09日 0Comments 165Browse 0Like Read more
Spring

JUnit 5 测试 Spring 引擎的时候提示 junit-vintage 错误

在 Spring 项目中运行测试的时候,得到错误: TestEngine with ID 'junit-vintage' failed to discover tests” with Spring 这个错误的原因是 JUnit 的引擎,使用了 junit-vintage 引擎。 junit-vintage 是 Junit 4 中使用的引擎,如果你的项目使用了 Junit 5 的话,你需要在 spring-boot-starter-test 中将 JUnit 4 的引擎从测试中删除。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> junit-vintage-engine 和 junit-jupiter-engine 有什么不同 junit-vintage-engine 是 JUnit 4 中使用的测试引擎。 junit-jupiter-engine 是 JUnit 5 中使用的测试引擎。 如果你的 Spring 项目使用的新的 Spring Boot 版本的话,你应该默认使用了 JUnit 5 的引擎,因此为了兼容性,你需要在 spring-boot-starter-test 这个 POM 引用的时候将 JUnit 4 的引擎去除掉。     上面的这个配置你可以尝试下能解决你的问题。   https://www.ossez.com/t/junit-5-spring-junit-vintage/562

2020年10月09日 0Comments 211Browse 0Like Read more
Spring

Spring boot 启动提示数据源错误

在启动 Spring Boot 的项目的时候提示数据源未配置的错误。 09:52:08.333 [main] DEBUG o.s.b.d.LoggingFailureAnalysisReporter - Application failed to start due to an exception org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Failed to determine a suitable driver class at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.determineDriverClassName(DataSourceProperties.java:233) at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.initializeDataSourceBuilder(DataSourceProperties.java:174) Spring 会提示你完整的导致启动错误的信息是: *************************** APPLICATION FAILED TO START *************************** Description: Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine a suitable driver class Action: Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the classpath. If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active). Process finished with exit code 1 错误分析 从上面的启动信息来看,已经说得非常清楚了,就是因为你配置了 Spring 的数据组件,但是你没有配置相应的数据源。 因为这个会导致你的启动失败。 解决办法 有下面的集中解决办法: 加入 H2 包 最简单的解决办法就是在依赖中添加 H2 的数据库,如果你使用 Spring Batch 的话,这个组件也是需要的,因为 Spring 会使用 H2 为数据源。 添加数据源配置 如果你已经添加了数据库驱动,例如你添加了 mysql 的数据库驱动。 那么你需要制定 Mysql 的数据库连接参数。 spring.datasource.url=jdbc:mysql://localhost:3306/myDb spring.datasource.username=user1 spring.datasource.password=pass spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver 在启动时候不载入数据源配置。 你可用在启动的时候不载入数据源配置。 可用在启动类上面,添加下面的注解。 @SpringBootApplication(exclude={DataSourceAutoConfiguration.class})     你也可以在启动配置文件上面,添加下面的内容,这样能够保证你在启动的时候不载入数据源配置类。 spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAuto   https://www.ossez.com/t/spring-boot/504

2020年09月21日 0Comments 206Browse 0Like Read more
Spring

Srping RestTemplate 将 Web 上的 JSON 数据快速本地实例化

在很多平常的数据收集和挖掘过程中,我们可能希望将网络上的 JSON 数据库快速获取并且插入到本地数据库中。 通常方法就是将 JSON 数据下载,然后对 JSON 数据库进行处理,然后保存。 Spring 有没有提供什么快速的方法进行处理?     其实 Spring 提供了一个 RestTemplate 可以完成数据下载,并且进行在内存中进行对象的转换。 有关 RestTemplate 的 API ,你可以参考 https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html 中的内容。 这里我们使用的是 exchange 进行的转换。 例如, 我们希望将 https://covidtracking.com/api/v1/states/current.json 中的数据存入到我们的本地数据库中。 我们就可以使用提供的 exchange 方法。 首先我们需要定义:Covid19Current 对象,这个对象必要重要,首先这个对象是 JPA 的对象,同时这个对象也映射了 JSON 数据中的字段。 如果你不希望这样映射的话,那么你需要进行字段的转换。 请参考 :https://github.com/ossez-com/covid-19/blob/master/covid-19-common/src/main/java/com/ossez/covid19/common/models/Covid19Current.java 文件中,我们定义的字段内容。 然后你就可以使用下面的代码进行数据转换和映射: ResponseEntity<Covid19Current[]> responseEntity = restTemplate.exchange("https://covidtracking.com/api/v1/states/current.json", HttpMethod.GET, null, Covid19Current[].class); Covid19Current[] covid19Currents = responseEntity.getBody(); 请注意,我们这里使用的 Get 方法,然后将数据转换到对象 Array 中。 具体方法,请参考:https://github.com/ossez-com/covid-19/blob/master/covid-19-service/src/main/java/com/ossez/covid19/service/batch/tasklet/Covid19Tasklet.java   https://www.cwiki.us/display/SpringBootZH/questions/57939087

2020年04月16日 0Comments 325Browse 0Like Read more
Spring

@ComponentScan 无参数

Spring @ComponentScan 无参数的组件扫描路径是什么 在 Spring 中,我们使用 @ComponentScan 和 @Configuration 注解来指定希望扫描的 Package。 如果你使用的 @ComponentScan 的话,将会扫描当前文件夹和所有的子文件夹。 https://www.cwiki.us/display/SpringBootZH/questions/57939056

2020年04月14日 0Comments 304Browse 0Like Read more
Spring

Srping Batch 不能 autowire. No beans of 'JobBuilderFactory' type found

Spring Batch 在 autowire 的时候提示: Could not autowire. No beans of 'JobBuilderFactory' type found. 这个错误提示其实是在 IntelliJ 中提示的,尽管有这个错误,你的程序还是可以运行没有问题的。   简单来说,这个提示就是 IntelliJ 没有办法通过 Autowire 找到对应的 Bean。 如果你使用的是 Spring Batch 的话,你可以在你的 Batch 配置文件中添加: @EnableBatchProcessing 注解。 这样的话,你的Class 就不会在 IntelliJ 中有这个错误提示了。   https://www.cwiki.us/display/SpringBatchZH/questions/57939048

2020年04月14日 0Comments 332Browse 0Like Read more
Spring

@Controller 和 @RestController 区别是什么

@RestController 在 Spring MVC 中就是 @Controller 和 @ResponseBody 注解的集合。 @RestController 注解是从 Spring 4.0 版本开始添加进来的,主要用于更加方便的构建 RESTful Web 服务。 @ResponseBody 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。使用此注解此次请求将不再走视图处理器,而是直接将此响应结果写入到输入流中,其效果等同于使用response对象输出指定格式的数据。 在 RESTful 的服务中,我们大部分情况是使用 JSON 为返回数据的,所以你可以直接使用  @RestController 替换掉 @Controller 和 @ResponseBody。 根据上面的解释,下面的 2 段代码是完全一样的: @Controller @ResponseBody public class MVCController { .. your logic } @RestController public class RestFulController { .... your logic }   https://www.cwiki.us/display/SpringBootZH/questions/57939042

2020年04月14日 0Comments 329Browse 0Like Read more
Spring

Spring Boot 项目编译时提示错误 cannot access WebApplicationInitializer 错误

具体的提示信息如下: Error:(21, 8) java: cannot access org.springframework.web.WebApplicationInitializer class file for org.springframework.web.WebApplicationInitializer not found   这个错误要结合你的 Application 代码来看。 因为在 Application 的代码中,我们继承了 SpringBootServletInitializer。 请注意:我们定义的 Application: public class Application extends SpringBootServletInitializer{ } 正是因为这个定义,所以你的 POM 或者 build.gradle 中 需要添加:spring-boot-starter-web 依赖。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.2.6.RELEASE</version> </dependency> 然后你再次编译的项目,你就不会有提示编译错误了。 https://www.cwiki.us/display/SpringBootZH/questions/57939020

2020年04月13日 0Comments 284Browse 0Like Read more
Spring

Spring Boot 使用 H2 数据库的控制台(Console)

如果你希望在 Spring Boot 启用 H2 数据库的话,这篇文章适合你进行了解。 概述 在这个指南中,我们将会考虑如何在  Spring Boot 中使用 H2 数据库。 与其他数据库相似,Spring Boot 生态系统中能够完全支持 H2 数据库 依赖(Dependencies) 让我们首先需要定义 H2 数据库依赖:https://search.maven.org/search?q=g:com.h2database 同时我们还需要使用 spring-boot-starter-data-jpa 依赖:https://search.maven.org/search?q=a:spring-boot-starter-data-jpa <dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-data-jpa</artifactId>     <version>2.1.4.RELEASE</version> </dependency> <dependency>     <groupId>com.h2database</groupId>     <artifactId>h2</artifactId>     <scope>runtime</scope>     <version>1.4.199</version> </dependency> 与其他的 Spring Boot 管理相似,通常你不需要为你使用的 Spring Boot 指定版本号。 数据库配置 在默认的情况下,Spring Boot 将会配置 H2 数据库使用 sa 为用户名,用户名密码为空。 当然你可以可以通过修改 application.properties  文件中配置文件来为你的 H2 数据库指定登录的用户名和密码。 spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password=password spring.jpa.database-platform=org.hibernate.dialect.H2Dialect 如果你使用的 H2 基于内存的数据库的话,你所有存储在内存中的数据将会在你重新启动服务器的时候完全丢失。 如果你希望避免这个情况的话,你可以使用基于文件存储的数据库,你可以通过下面的参数修改为基于文件使用的数据库,修改 spring.datasource.url: 参数为 spring.datasource.url=jdbc:h2:file:/data/demo 文件系统使用的路径为绝对路径,有关 H2 数据库配置的方法,请参考 http://www.h2database.com/html/features.html#connection_modes 页面中的内容。 数据库选项 Spring Boot 整合 H2 提供的增删改查(CRUD)与普通数据库的增删改查是相似的。请参考 https://www.baeldung.com/persistence-with-spring-series 页面中获得更多的有关数据持久化相关的信息。 在这里,请将 data.sql 文件添加到 src/main/resources 目录下面: DROP TABLE IF EXISTS billionaires;   CREATE TABLE billionaires (   id INT AUTO_INCREMENT  PRIMARY KEY,   first_name VARCHAR(250) NOT NULL,   last_name VARCHAR(250) NOT NULL,   career VARCHAR(250) DEFAULT NULL );   INSERT INTO billionaires (first_name, last_name, career) VALUES   ('Aliko', 'Dangote', 'Billionaire Industrialist'),   ('Bill', 'Gates', 'Billionaire Tech Entrepreneur'),   ('Folrunsho', 'Alakija', 'Billionaire Oil Magnate'); Spring Boot 将会在系统应用程序启动后,将会自动选择  data.sql 文件然后在我们的 H2 数据库中进行配置。 这种方式是对使用的数据库进行进行测试的比较好的办法。 访问 H2 控制台 H2 数据库有一个嵌入式 GUI 控制台能够让你对数据库的内容进行查询和运行  SQL。 在默认情况下,H2 的控制台没有嵌入到 Spring 中。所以你需要对这个控制台工具进行启用,请在 application.properties 文件中添加下面的参数: spring.h2.console.enabled=true 在启用上面的参数后,如果你启用了 Spring Boot 应用程序,你可以导航到 http://localhost:8080/h2-console界面中,在这个界面中首先将会显示登录界面。 在登录界面中适用的登录信息是你在 application.properties 文件中指定的登录信息。 一旦你成功连接到控制台后,我们将会看到一个完整的控制台界面。 在这个完整的控制台界面中的作出,你将会看到 H2 数据库中所有的数据表,同时还包含有一个文本对话框中包含了可以运行的 SQL 查询: 在这个 Web 的控制台界面中,具有自动完成 SQL 关键字的功能。这个功能能够让给控制台更加轻量的运行并且具有 SQL 关键字帮助的功能,能够让你在文本对话框中直接运行 SQL 脚本。 更进一步,我们将会在 application.properties 中配置更多的参数能够满足你的对当前项目的需求: spring.h2.console.path=/h2-console spring.h2.console.settings.trace=false spring.h2.console.settings.web-allow-others=false 在上面的代码中,我们设置了 H2 的控制台访问控制台的 URL 为: /h2-console,这个链接是针对你当前项目运行的服务器地址和端口的相对地址。 例如你当前服务器运行的 URL 为  http://localhost:9001 那么 H2 控制台访问的地址为  http://localhost:9001/h2-console。 同时我们设置了 spring.h2.console.settings.trace 参数为 false,这样我们能够避免在系统控制台中输出 trace 级别的日志信息。 通过设置 spring.h2.console.settings.web-allow-others=false 参数,我们能够禁止远程 Web 访问 H2 数据库的信息。 结论 H2 是完全与 Spring Boot 兼容的,通过这篇文章,你能够了解如何使用 H2 控制台来管理整治运行的数据库。 有关完整的代码情况参考我们提交到 GitHub 中的代码示例:https://github.com/cwiki-us-demo/java-tutorials/tree/master/persistence-modules/spring-boot-persistence-h2-console 中的内容。 LikeBe the first to like this

2020年04月04日 0Comments 331Browse 0Like Read more
Spring

Spring Boot 中如何启用 H2 的控制台

如何在 Spring Boot 中如何启用 H2 的控制台? 你需要在你的 application.properties 文件中启用配置: spring.h2.console.enabled=true spring.h2.console.path=/h2-console 具体的配置你可以参考页面 Spring Boot 使用 H2 数据库的控制台(Console) 中的内容。 运行后的界面如下: 使用的端口,是你 Spring Boot 运行使用的端口。 登录进去数据库后查看的界面: 你也可以访问 GitHub 上面的内容下载代码: https://github.com/cwiki-us-demo/java-tutorials/tree/master/persistence-modules/spring-boot-persistence-h2-console 有关本内容的链接: https://www.cwiki.us/display/SpringBootZH/questions/57938823  

2020年04月04日 0Comments 295Browse 0Like Read more
12345
Categories
  • Akka
  • Algorithm(算法)
  • AMQP
  • Angular
  • CI
  • Compile And CI
  • Computer Science
  • Confluence
  • DataBase
  • Gradle
  • Hibernate
  • IDE
  • Java
  • Jersey
  • Jira
  • MariaDB
  • PrestaShop
  • Spring
  • Spring Batch
  • U.S.
  • U.S. Travel
  • USRealEstate
  • 我的小厨

COPYRIGHT © 2020 CWIKIUS. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

湘ICP备2020018253号-1