目次
最近、SpringBootフレームワークを使用してThingsboardプロジェクトを研究しています。APP開発者は、最初にこのフレームワークを理解してから、Thingsboardプロジェクトを研究する必要があります。したがって、SpringBootプロジェクトをビルドするときに発生した問題を簡単に要約します。
概要概要
SpringBootはSpringFrameworkに基づいており、Springアプリケーションをすばやく構築するために使用されます。SpringBootは多くのフレームワークを統合しているため、ライブラリのコレクションです。Mavenと比較すると、Mavenはjarパッケージのコレクションです。
SpringBoot設計の目的は、Springアプリケーションを可能な限り迅速に実行し、構成ファイルを削減することです。
SpringCloudは、一般にクラウドアプリケーションと呼ばれるSpringBootを構築するための分散環境です。
Springアプリケーションには、Web、サービス、およびdaoの3層アーキテクチャがあります。
プロジェクトをビルドする
前提は、JDK 1.8以降、管理ツールMaven、開発ツールIntellijIDEAがインストールされていることです。
- 1. Spring Assistantを使用して新しいプロジェクトを作成し、[ファイル]-> [新規]-> [プロジェクト...]をクリックすると、次のダイアログボックスが表示されます。
プラグインがインストールされていない場合、IntellijではSpring Assistantオプションを使用できないため、プラグインでSpring Assistantを検索して、インストールする必要があります。スクリーンショットに表示されている「アンインストール」は、プラグインをインストールしたためです。
このプラグインを使用すると、最初の手順を繰り返して新しいプロジェクトを作成すると、SpringAssistantオプションが表示されます。操作の最初のステップでデフォルトのURLを選択します。その中で、アドレスhttps://start.spring.ioは「接続タイムアウト」をスローすることがあります。これは数回の試行で成功する可能性があります。もちろん、「https://start.aliyun.com」に設定することもできます。カスタムで。[次へ]をクリックして、次のステップに入ります
- 2.プロジェクト情報を入力します
ここで、プロジェクト名の文字は小文字にする必要があることに注意してください。そうでない場合、開始できないSpringbootApplicationクラスが後で生成され、Applicationクラスのみが生成されます。
- 3.Webの依存関係とSQLの依存関係を確認します
シングスボードはPostgreSQLを使用しているので、選択するときはPostgreSQLドライバーを選択する必要があると感じています
- 4.保存するプロジェクトパスを選択します。
プロジェクトの実行
プロジェクトをテストして実行するには、HelloSpringBootControllerのリクエストをプロジェクトに追加します。HelloSpringBootControllerクラスのコードは次のとおりです。
package com.example.springboot.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloSpringBootController {
@RequestMapping("/hello")
public String hello() {
return "Hello Spring Boot";
}
@RequestMapping("/helloint")
public int helloInt() {
return 123;
}
}
スタートアップクラスSpringbootApplicationのコードは次のとおりです。このクラスを実行します。
package com.example.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootApplication.class, args);
}
}
次に、Intellijの出力が次のように表示され、SpringbootApplicationが正常に開始されたことを示します。
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.3.1.RELEASE)
2020-07-22 16:08:11.006 INFO 7592 --- [ main] c.e.springboot.SpringbootApplication : Starting SpringbootApplication on liuwenjingMacBook-Pro.local with PID 7592 (/Users/j1/Documents/iOT/springboot/target/classes started by j1 in /Users/j1/Documents/iOT/springboot)
2020-07-22 16:08:11.008 INFO 7592 --- [ main] c.e.springboot.SpringbootApplication : No active profile set, falling back to default profiles: default
2020-07-22 16:08:11.976 INFO 7592 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2020-07-22 16:08:11.988 INFO 7592 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2020-07-22 16:08:11.988 INFO 7592 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.36]
2020-07-22 16:08:12.064 INFO 7592 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2020-07-22 16:08:12.064 INFO 7592 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1003 ms
2020-07-22 16:08:12.209 INFO 7592 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2020-07-22 16:08:12.385 INFO 7592 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2020-07-22 16:08:12.395 INFO 7592 --- [ main] c.e.springboot.SpringbootApplication : Started SpringbootApplication in 1.994 seconds (JVM running for 2.376)
もちろん、動作中にポート8080が占有される場合があり、ポート8080を占有するプログラムを見つけて、プログラムを強制終了します。
<!--找到所有的占用8080端口的程序-->
MacBook-Pro:file xxx$ lsof -i:8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
WeChat 258 j1 30u IPv6 0x3f60708f15ffb7b9 0t0 TCP 172.16.20.40:49184->116.128.133.100:http-alt (ESTABLISHED)
?\x81? 290 j1 16u IPv4 0x3f60708f203ec639 0t0 TCP 172.16.20.40:50287->157.255.245.177:http-alt (ESTABLISHED)
?\x81? 290 j1 31u IPv4 0x3f60708f379ff339 0t0 TCP 172.16.20.40:50417->reverse.gdsz.cncnet.net:http-alt (ESTABLISHED)
QQ 295 j1 18u IPv4 0x3f60708f1c3bc939 0t0 TCP 172.16.20.40:49204->153.3.50.86:http-alt (ESTABLISHED)
QQ 295 j1 21u IPv4 0x3f60708f1c3bc939 0t0 TCP 172.16.20.40:49204->153.3.50.86:http-alt (ESTABLISHED)
<!--将占用8080端口的程序杀掉-->
MacBook-Pro:file xxx$ kill 290
<!--找到所有的占用8080端口的程序-->
MacBook-Pro:file xxx$ lsof -i:8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
WeChat 258 j1 30u IPv6 0x3f60708f15ffb7b9 0t0 TCP 172.16.20.40:49184->116.128.133.100:http-alt (ESTABLISHED)
QQ 295 j1 18u IPv4 0x3f60708f1c3bc939 0t0 TCP 172.16.20.40:49204->153.3.50.86:http-alt (ESTABLISHED)
QQ 295 j1 21u IPv4 0x3f60708f1c3bc939 0t0 TCP 172.16.20.40:49204->153.3.50.86:http-alt (ESTABLISHED)
MacBook-Pro:file xxx$
ブラウザに「http:// localhost:8080 / hello」と入力すると、インターフェイスは次のように表示されます。
「http:// localhost:8080 / helloint」と入力すると、インターフェイスは次のように表示されます。
総括する
単純なSpringBootプロジェクトは正常に実行できるため、この単純な例から学ぶことで、thingsboardプロジェクトを見ると、org.thingsboard.server.controllerの下のコントローラーから開始できるはずであることがわかります。ただし、SpringBootフレームワーク自体について知っておく必要があることは次のとおりです。
(1)注釈の意味と実現できる機能
(2)Webページとこれらの注釈がページからどのようにレンダリングされるか
(3)データベースの操作方法
これらの問題を今考えて、続けてください。