三不朽

使用Google Firebase中的FCM在Android或IOS中推送消息服务端实现,以PHP为例

Publish: July 30, 2021 Category: 代码分享 No Comments

本文主要讲述使用firebase cloud-message功能在服务端的集成和开发指导。以使用firebase-php的sdk为例子描述该过程。

0x01 SDK集成
firebase没有提供官方的php版本的SDK,貌似google对php不太友好啊! 去github寻找相关sdk,发现这个sdk(GitHub - kreait/firebase-php: Unofficial Firebase Admin SDK for PHP)更新频次和star数量都不错。

项目根目录中使用如下命令安装

composer require kreait/firebase-php

0x02 使用SDK
登录 firebase 控制台 https://console.firebase.google.com/ 找到 项目凭证(credentials)文件。

选中 项目进入项目控制台,在左侧顶部Project Overview一级菜单中,点击右侧齿轮进入 Project Setting。在Service Accounts标签中点击“Generate new private key” 生成凭证文件。



阅读剩余部分...

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>