左手地狱


  • Home

  • Archives

快速开发一个自定义SpringBoot Starter

Posted on 2019-08-03

参照:http://www.justdojava.com/2019/07/20/java-springboot-starter/#

1.SpringBoot Starter

Starters are a set of convenient dependency descriptors that you can include in your application.

2.创建starter

2.1 创建springboot工程zsdy-json-spring-boot-starter,并加入自动装配spring-boot-autoconfigure和fastjson的依赖

<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.zsdy</groupId>
    <artifactId>zsdy-json-spring-boot-starter</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
            <version>2.1.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.58</version>
        </dependency>
    </dependencies>
</project>

2.2 创建MyJsonService

package com.zsdy.json;

import com.alibaba.fastjson.JSON;

public class MyJsonService {

    private String name;

    /**
    * 使用 fastjson 将对象转换为 json 字符串输出
    */
    public String objToJson(Object object) {
        return getName() + JSON.toJSONString(object);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

2.3 创建配置类MyJsonProperties

package com.zsdy.json;

import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties(prefix = "ziyou.json")
public class MyJsonProperties {

    public static final String DEFAULT_NAME = "ziyou";

    private String name = DEFAULT_NAME;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

2.4 创建自动化配置类

package com.zsdy.json;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@ConditionalOnClass({MyJsonService.class})
@EnableConfigurationProperties(MyJsonProperties.class)
public class MyJsonAutoConfiguration {

    /**
    * 注入属性类
    */
    @Autowired
    private MyJsonProperties myJsonProperties;

    /**
    * 当当前上下文中没有 MyJsonService 类时创建类
    */
    @Bean
    @ConditionalOnMissingBean(MyJsonService.class)
    public MyJsonService myJsonService() {
        MyJsonService myJsonService = new MyJsonService();
        myJsonService.setName(myJsonProperties.getName());
        return myJsonService;
    }
}

2.5 创建spring.factories(resource/META-INF/),增加自动装配的类

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.zsdy.json.MyJsonAutoConfiguration

2.6 然后我们通过运行mvn install命令,将这个项目打包成 jar 部署到本地仓库中,提供让另一个服务调用,自此starter就构建成功了。

3.调用自创建的SpringBoot Starter(和其它SpringBoot Starter调用一样)

3.1 创建一个新的 SpringBoot web项目zsdy-json,并提供一个接口进行测试

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.zsdy</groupId>
    <artifactId>zsdy-json</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>zsdy-json</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

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

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

        <dependency>
            <groupId>com.zsdy</groupId>
            <artifactId>zsdy-json-spring-boot-starter</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.8</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

3.2 配置application.properties

server.port=8080
ziyou.json.name=json-zsdy

3.3 测试接口

package com.zsdy.controller;

import com.zsdy.enity.User;
import com.zsdy.json.MyJsonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
* @author zsdy
* @create 2019-08-02 11:39
**/
@RestController
public class JsonController {

    @Autowired
    private MyJsonService myJsonService;

    @RequestMapping(value = "json")
    public String beanToJson() {
        User user = new User();
        user.setName("小明");
        user.setAge(20);
        String toJson = myJsonService.objToJson(user);
        return toJson;
    }
}

3.4 启动zsdy-json项目,打开浏览器访问接口 http://localhost:8080/json 可以看到如下效果。

json-zsdy{"age":20,"name":"小明"}

至此,我们就完成了快速开发一个自定义SpringBoot Starter.

本地代码上传github

Posted on 2019-08-02

1.环境

本地已经安装git
github建立账号
github 设置ssh公钥

2.上传项目zsdy-json至github

2.1 github上建立仓库zsdy-json

2.2 本地代码根目录下执行

git init                    --初始化
git add -A                  --提交所有变化 
git commit                  --提交至本地仓库
git push  origin master     --push到github仓库

mac下elasticsearch安装(elk)

Posted on 2019-08-01

1.mac安装elasticsearch

brew install elasticsearch
brew install kibana
brew install logstash

2.访问

elasticsearch:http://localhost:9200
Kibana:http://localhost:5601

Hexo 博客发布新文章

Posted on 2019-07-31

1.创建.md文件并写入内容,保存到_posts/目录下

2.进入hexo博客目录(与_config.yml同级目录)

3.执行

hexo g  
hexo d 

25-35岁,你应该做什么

Posted on 2019-07-31

从今天起,每天坚持学习

Hexo 搭建博客

Posted on 2019-07-16

环境:mac

1. 安装node.js和git

1.1 安装git

brew install git

1.2 安装node.js

brew install node

2. 安装Hexo

npm install -g hexo

hexo安装完成后,在本地创建一个存放博客的文件夹,如:/Users/xxx/blog/

2.1 进入上一步创建的目录,初始化hexo

hexo init

2.2 安装插件和依赖

npm install

2.3 启动服务器进行本地预览

hexo s

在浏览器中打开http://localhost:4000,成功的话可看到博客页面,至此安装hexo就完成了

3. 同步hexo博客到github

3.1 注册github账号并创建reposity

3.2 vi打开_config.yml,在最后加入

deploy:
  type: git
  repo: https://github.com/zuoshoudiyu/     zuoshoudiyu.github.io.git
  branch: master

3.3 保存_config.yml,执行下面命令

npm install hexo-deployer-git --save

3.4 部署hexo

hexo clean
hexo generate
hexo deploy

至此,Hexo博客搭建完成!

关于java

Posted on 2019-07-16

随便写写….
1.java是一门博大精深的语言,其中所包含的东西可能一生都无法完全掌握,这就好比看文,总是有好的文章等着你.
2.首先你需要掌握java基础知识,注意,是掌握,是熟到做梦都会,而不是连如何重写hashCode()方法都不会.
3.一时编码一时痛,一直编码一直爽.–是真的需要你坚持一下子,打通任督就轻松了.
4.订阅博客,公众号,电子书等资源.–地铁时间还是别浪费.
5.阅读开源框架源码.–相信我,spring会了你的春天就来了.
6.了解最新技术–低头种地,抬头看天.
7.写一篇文章记录下你的mind,曾经一个poi问题,第一次时写了博客,之后重复犯了4次,直到查到我写的博客.

1…34

zuoshoudiyu

37 posts
© 2020 zuoshoudiyu
Powered by Hexo
|
Theme — NexT.Muse v5.1.4