Skip to content

Latest commit

 

History

History
128 lines (104 loc) · 4.43 KB

application.md

File metadata and controls

128 lines (104 loc) · 4.43 KB

环境准备

  • release-3.2分支源码
  • IDE Idea或Eclipse,本文使用Idea

准备

使用Idea打开源码工程。

工程结构

双击application文件夹。

分析

pom.xml进行基础分析

pom
  • denpendencies

    <dependencies>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-transport-native-epoll</artifactId>
                <version>${netty.version}</version>
                <!-- Explicitly bring in the linux classifier, test may fail on 32-bit linux -->
                <classifier>linux-x86_64</classifier>
            </dependency>
            ....
    </dependencies>      
    

    一些基础的依赖,有nettyspring-boot-start-webcommonrule-enginetransportdaopa hojwt等等,大体可以分为两类:外部依赖和自身依赖(依赖其他子工程),最核心的依赖是**spring-boot-start-web,通过此依赖,可以得出application是一个基于Spring boot的Web工程**。

  • build

    <build>
          <finalName>${pkg.name}-${project.version}</finalName>
          <resources>
              <resource>
                  <directory>${project.basedir}/src/main/resources</directory>
              </resource>
          </resources>
          <plugins>
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-compiler-plugin</artifactId>
              </plugin>
          </plugins>
    </build>
    

    一些编译插件

  • repositories

    <repositories>
            <repository>
                <id>jenkins</id>
                <name>Jenkins Repository</name>
                <url>https://repo.jenkins-ci.org/releases</url>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
            </repository>
    </repositories>
    

    依赖仓库jenkins,可能有一些特殊依赖需要从jenkins仓库中获取。

结构

maven工程约定:src/main/java存放源码,src/main/resource存放资源文件,src/test/java存放测试文件,src/test/resource存放测试资源文件

  • src/main/java
.
└── org
    └── thingsboard
        └── server
            ├── ThingsboardInstallApplication.java (安装)
            ├── ThingsboardServerApplication.java (启动)
            ├── actors (暂时不明)
            ├── config (一些配置)
            ├── controller (MVC控制层)
            ├── exception (异常相关)
            ├── install (安装相关)
            ├── service (MVC服务层)
            └── utils (工具类)

ThingsboardInstallApplication看着是安装应用的入口,ThingsboardServerApplication看着是服务入口,后续重点关注这2个文件

  • src/main/resource
.
├── banner.txt (Spring boot应用启动时的控制台输出)
├── i18n (国际化相关)
├── logback.xml (logback日志框架的配置文件)
├── templates (一些模版)
└── thingsboard.yml (thingsboard配置文件)

后续重点关注thingsboard.yml文件

  • src/test/java 一些测试文件,暂时忽略
  • src/test/resource 一些测试资源文件,暂时忽略
  • src/main/conf 一个logback.xml配置文件和thingsboard.conf配置文件,用途不明,可能是打包时使用
  • src/main/data
.
├── certs (证书文件夹,只有一个`Azure`子文件夹,可能与微软的Azure平台相关)
├── json (看着system Widgets_bundle以及tenant rule chains,可能和系统初始化相关)
└── upgrade (升级文件夹,里面有多个版本号的子文件夹,可能有一些相关脚本升级脚本)

结论

通过分析,可以得出以下结论:

  • application是一个基于Spring Boot的Web工程。
  • application包含有两个入口类:ThingsboardInstallApplication(安装)和ThingsboardServerApplication(启动)
  • 日志使用了logback框架
  • 配置文件为thingsboard.yml

TIPS