• springboot 开发 Tars


    1,创建 springboot 项目,并在启动类添加 @EnableTarsServer 注解

    @SpringBootApplication
    @EnableTarsServer
    public class GlobalIdApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(GlobalIdApplication.class, args);
        }
    }

    2,pom

    <?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>
    
        <groupId>com.ictpaas</groupId>
        <artifactId>GlobalId</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <name>GlobalId</name>
        <description>Demo project for Spring Boot</description>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.4.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
            <!-- tars 版本 -->
            <tars.version>1.6.0</tars.version>
            <!-- springboot 版本 -->
            <spring-boot.version>2.0.3.RELEASE</spring-boot.version>
            <spirngmvc.version>4.3.14.RELEASE</spirngmvc.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>com.tencent.tars</groupId>
                <artifactId>tars-spring-boot-starter</artifactId>
                <version>${tars.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.tencent.tars</groupId>
                <artifactId>tars-server</artifactId>
                <version>${tars.version}</version>
                <type>jar</type>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <!-- spring mvc -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <testFailureIgnore>true</testFailureIgnore>
                    </configuration>
                </plugin>
                <!-- springboot 启动类 -->
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <mainClass>com.ictpaas.GlobalIdApplication</mainClass>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <!-- tars 文件位置 -->
                <plugin>
                    <groupId>com.tencent.tars</groupId>
                    <artifactId>tars-maven-plugin</artifactId>
                    <version>1.6.0</version>
                    <configuration>
                        <tars2JavaConfig>
                            <!-- 项目中 tars 文件位置 -->
                            <tarsFiles>
                                <tarsFile>${basedir}/src/main/resources/GlobalId.tars</tarsFile>
                            </tarsFiles>
                            <tarsFileCharset>UTF-8</tarsFileCharset>
                            <!-- 生成接口,true 服务端,false 客户端 -->
                            <servant>false</servant>
                            <charset>UTF-8</charset>
                            <srcPath>${basedir}/src/main/java</srcPath>
                            <!-- 生成源代码包前缀 -->
                            <packagePrefixName>com.ictpaas.tars.client</packagePrefixName>
                        </tars2JavaConfig>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
    </project>

    3,创建 tars 文件,生成接口文件

    分两次生成接口,一次生成服务端接口(一个服务肯定要有服务端接口,除了 http 服务),一次生成客户端接口(客户端是为了方便别的服务来调用当前服务)

    4,实现服务端接口,重写接口方法并暴露服务

    @TarsServant("GlobalIdObj") 表示 obj 名是 GlobalIdObj。如果不使用 springboot ,暴露接口需要在 xml 文件中配置
    @TarsServant("GlobalIdObj")
    public class GlobalIdServantImpl implements GlobalIdServant {
    
        @Override
        public String getGlobalId(String pre) {
            // TODO Auto-generated method stub
            
            // 获取当前年月日
            if(pre.length() != 5) {
                return "10001";
            }
            String[] strNow = new SimpleDateFormat("yyyy-MM-dd").format(new Date()).toString().split("-");
            String currYear = strNow[0];
            String currMonth = strNow[1];
            String currDay = strNow[2];
            
            // 17 位随机数,来自 UUID 保留 机器识别规则
            String uuidRandom = UUID.randomUUID().toString().substring(15).replace("-", "");
            
            return pre.concat(currYear).concat(currMonth).concat(currDay).concat(uuidRandom);
            
        }
    
    }
  • 相关阅读:
    公司某台电脑连接服务器共享文件失败(Windows找不到"\192.168.1.3)
    隐式转换题目;
    video设置autoplay 不起作用
    面试时遇到的题目。正则,replace()
    优化以及bug
    简单的异步函数async/await例子
    i==1 && resolve()
    命名
    通过ES6 Module看import和require区别
    从 0 到 1 合理高效使用 GitHub 的资料
  • 原文地址:https://www.cnblogs.com/huanggy/p/9632946.html
Copyright © 2020-2023  润新知