Serverless架构下使用Spring native GraalVM工具方式加快Spring Boot应用启动速度

Publish: August 4, 2021 Category: 编程 No Comments

关于什么是Spring Navtive 和 Spring Native的优缺点上一篇文章已经有介绍,不太了解的小伙伴可以参考之。

0x01 系统要求

我们以Windows平台为例

下载GraalVM 地址: https://www.graalvm.org/downloads/
设置JAVA_HOME 和 PATH 环境变量
以管理员方式执行 gu install native-image 将native-image 扩展集成到JDK中

这个过程可能失败,需要挂一下代理

set https_proxy=socks5://192.168.xx.xx:1080 

如果执行成功会显示如下信息

C:\Windows\system32>gu install native-image  
Downloading: Component catalog from www.graalvm.org
Processing Component: Native Image                                                                                      
Downloading: Component native-image: Native Image  from github.com                                                      
Installing new component: Native Image (org.graalvm.native-image, version 21.2.0)


阅读剩余部分...

Spring Boot 中使用Mysql中的Point地址位置geometry类型

Publish: July 17, 2021 Category: 编程 No Comments

如果遇到了如下错误,并且是应为GEO相关的错误,可以参考下面的配置方式

使用JPA 映射Point类型

  1. Maven的pom.xml中添加如下依赖

    <dependency>
        <groupId>com.vividsolutions</groupId>
        <artifactId>jts</artifactId>
        <version>1.13</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-spatial</artifactId>
        <version>5.2.5.Final</version>
    </dependency>
    
  1. 在entity中定义相关字段

    @Column(name = "locationpoint", columnDefinition = "POINT")
    private Point locationpoint;

  1. 在application.properties配置文件中定义“方言”

    # needed for Location domain class
    spring.jpa.properties.hibernate.dialect=org.hibernate.spatial.dialect.mysql.MySQL56InnoDBSpatialDialect
    

这个地方很重要,有一些dialect是没有实现的,因此只能这么用

  1. 使用

    locationRepository.findOne((long) 1).getLocationpoint().getX();
    locationRepository.findOne((long) 1).getLocationpoint().getY();
    

Spring Boot 接口API JSON格式和Java Bean不一致时处理方式

Publish: July 15, 2021 Category: 编程 No Comments

如何在Spring Boot的控制器Controll中输出任意格式的JSON数据,如果使用统一封装的出口类很不灵活,在牺牲编码间接性的情况下,
可以用一下方式处理。

我们以User.class为实例

// Lombook注解
@Data
public class User {
    private Long id;
    private String username;
    private String password;
}
  1. 希望接口返回的几种数据格式

创建一个测试控制器 UserController.class,要求分别返回如下格式字段
第一个时User对象

{
    "id": 1,
    "username": "myname",
    "password": "mypassword"
}

第二个是一个List<user>的列表

[{
    "id": 1,
    "username": "myname",
    "password": "mypassword"
}, {
    "id": 2,
    "username": "myname2",
    "password": "mypassword2"
}]

第三个是一个Map<String, Object>对象

{
    "author_information": {
        "id": 1,
        "username": "myname",
        "password": "mypassword"
    },
    "page_url": "http://url_page",
    "fans_count": 4153,
    "blog_url": "http://url_blog"
}


阅读剩余部分...

SpringBoot 启动报错实例

Publish: July 13, 2021 Category: 编程 No Comments

启动中报告如下错误:

Description:

The Tomcat connector configured to listen on port 8090 failed to start. The port may already be in use or the connector may be misconfigured.

Action:

Verify the connector's configuration, identify and stop any process that's listening on port 8090, or configure this application to listen on another port.

说明已经有端口被占用,解决方案如下:

阅读剩余部分...