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.

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

阅读剩余部分...

Java小菜鸟 Spring Boot 错误笔记

Publish: June 1, 2021 Category: 编程 No Comments

遇到这个问题:

cannot find symbol method of(@javax.validation.constraints.NotEmpty java.lang.String)

应用代码

package com.example.demo_article_manage.entity;

import lombok.Data;

import javax.persistence.*;
import javax.validation.constraints.NotEmpty;
import java.io.Serializable;

@Entity
@Data
public class Article extends BaseEntity implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @Column(nullable = false, unique = true)
    @NotEmpty(message = "标题不能为空")
    private String title;

    @Column(nullable = false)
    private String body;
}

实际是缺少依赖,在POM.xml中添加如下依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

更新依赖,问题解决。

又遇到了这个问题

Spring - Cannot resolve MVC “view” thymeleaf

返回这些问题

{
    "timestamp": "2021-06-08T03:11:33.133+00:00",
    "status": 404,
    "error": "Not Found",
    "message": "No message available",
    "path": "/article/add"
}

两个原因:一个是没有引入thymeleaf依赖,另一个thymeleaf版本不兼容。最好不要制定版本,直接添加如下依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

APP出海--Firebase中云消息传递(FCM)接入和处理

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

0x00 FCM简介

消息类型
使用 FCM,您可以向客户端发送两种类型的消息:

  • 通知消息,有时被称为“显示消息”。此类消息由 FCM SDK 自动处理。
  • 数据消息,由客户端应用处理。

通知消息包含一组预定义的用户可见的键。 与其相对,数据消息只包含用户定义的自定义键值对。通知消息可以包含可选的数据载荷。两种消息类型的载荷上限均为 4KB,但从 Firebase 控制台发送消息时会强制执行 1024 个字符的限制。
使用情景 如何发送
通知消息 FCM 代表客户端应用自动向最终用户设备显示消息。通知消息包含一组预定义的用户可见键以及自定义键值对的可选数据载荷。 在可信环境(例如 Cloud Functions 或应用服务器中),使用 Admin SDK 或者 FCM 服务器协议:设置 notification 键。可能包含可选的数据载荷。 一律可折叠。请参阅一些显示通知示例并发送请求载荷。使用 Notifications Composer:输入消息文本、标题等,然后发送。 通过提供自定义数据添加可选的数据载荷。
数据消息 客户端应用负责处理数据消息。数据消息仅包含自定义键值对,没有保留键名(请参阅下文)。 在可信环境(例如 Cloud Functions 或应用服务器中),使用 Admin SDK 或者 FCM 服务器协议:仅设置 data 键。

0x01 FCM中几个重要凭据说明:

根据要实现的 FCM 功能的不同,您可能需要下列来自 Firebase 项目的凭据:
项目 ID 您的 Firebase 项目的唯一标识符,用于向 FCM v1 HTTP 端点发出请求。您可以在 Firebase 控制台设置窗格中找到该值。
注册令牌 用于标识每个客户端应用实例的唯一令牌字符串。 单一设备消息传递和设备组消息传递需要注册令牌。请注意,注册令牌必须保密。
发送者 ID 您在创建 Firebase 项目时系统创建的唯一数字值,可在 Firebase 控制台设置窗格的 Cloud Messaging 标签页找到。发送者 ID 用于标识可以向客户端应用发送消息的每个发送者。

访问令牌 一个只在短时间内有效的 OAuth 2.0 令牌,用于对发送到 HTTP v1 API 的请求进行授权。此令牌与属于您的 Firebase 项目的服务帐号相关联。如需创建和轮替访问令牌,请按照向发送请求提供授权中所述的步骤操作。
服务器密钥(用于旧版协议) 用于授权您的应用服务器访问 Google 服务(包括通过 Firebase Cloud Messaging 传递旧版协议发送消息)的服务器密钥。您在创建 Firebase 项目时获取服务器密钥。您可以在 Firebase 控制台设置窗格的 Cloud Messaging 标签页查看此密钥。重要提示:切勿在客户端代码中的任何位置包含服务器密钥。另外,请确保在为您的应用服务器授权时仅使用服务器密钥。Android 密钥、iOS 密钥和浏览器密钥会被 FCM 拒绝。









阅读剩余部分...