私はSpring BootでP.O.Cをやっています。
これまでのところ、非常に良好で有望ですが、1つの大きな欠点があります。組み込みサーバーを使用している(つまり、Webアプリを.jar
)。したがって、開発時には、CSS、HTML、またはJSファイルを変更するたびに、jarを再構築してサーバーを再起動する必要があります。ホットスワップはありません。これにより、UI開発が本当に遅くなります。
別のドメインから静的リソースをロードしてローカルnginx
から提供するなど、いくつかの簡単な修正や、このようないくつかのバリエーションを考えることができますが、何らかの組み込みオプションはありませんIntelliJ/Eclipseを使用する場合
いくつかのオプションがあります。 IDE(特にデバッグをオンにした状態))で実行することは、開発を行うための良い方法です(すべての最新のIDEでは、静的リソースの再読み込みと、通常Java Spring Boot devtoolsは、大幅に向上させるための安価な方法です(クラスパスに追加するだけです)。変更が検出されたときに、ホットJVMでアプリケーションを再起動することにより動作します。より高いレベルのツールを使用してコードを記述している場合は、外部のcss/jsコンパイラプロセスで使用できます。
Spring Loaded は推奨されなくなりましたが、おそらくまだ使用中です。遅延ゼロのホットスワップが必要な場合(JRebelなど)、より洗練されたエージェントベースのツールは非常によく機能します。
最新のコンテンツについては docs をご覧ください
ホットスワップを取得できます:
詳細を確認するには、この投稿を確認してください: http://blog.netgloo.com/2014/05/21/hot-swapping-in-spring-boot-with-Eclipse-sts/
この種のサポートがどこまで進んでいるかはわかりませんが、Eclipse IDE(またはこれを読んでいる人)を使用する場合:デバッグでm2eを介してSpring-Bootアプリケーションを起動します) -mode([デバッグ]ドロップダウンボタンを押して、Maven実行構成アイテムを選択します)。
それは私にとって魅力のように機能します。
私のMaven実行構成アイテムは次のように構成されています。
私は使用しないさらなるライブラリ(spring-boot-devtoolsでさえない)です。
それでおしまい。
しかし、IntelliJ/Eclipseを使用する場合、何らかの組み込みオプションはありませんか?
IntelliJ 15.0、Windows 10で私を助けたのは、次のシーケンスでした。
STEP 1:@jonashacktで述べたように、pomに次の依存関係を追加しました(これはどこでも言及されていますが、これだけで解決します)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
STEP 2:次に、File-> Settings-> Build-Execution-Deployment-> Compilerから(メインコンパイラオプションが選択されており、サブオプション)
プロジェクトの自動作成を有効にします。 [OK]をクリックしてダイアログを閉じます
STEP 3:ホールド Shift+Ctrl+A (Windowsの場合)「Enter action or option name」というタイトルの検索ダイアログが表示され、レジストリを入力します。 「レジストリ」という最初のオプションをダブルクリックすると、別のウィンドウが開きます。次のオプションを探します。
compiler.automake.allow.when.app.running
有効にして、閉じるをクリックします
ステップ4:IDEを再起動
これから詳しく説明します source
Intellijでは、この動作を取得できます。プログラムがデバッグモードで実行されている場合は、Run > Reload Changed Classes
注:Intellijがアクションを完了すると、Loaded classes are up to date. Nothing to reload
。これは実際にはDIDクラスパスリソースをリロードするため、誤解を招く可能性があります。
私の環境/セットアップには以下が含まれます:
Intellij 13
埋め込みTomcat
タイプ 'Application'の実行/デバッグ構成(メインクラスのみを使用)
静的なhtml、css、jsの提供(jspなし)
Gradleを使用していると仮定します。 build.gradleで次の構成を使用します
_apply plugin: 'Java'
apply plugin: 'idea'
apply plugin: 'spring-boot'
apply plugin: 'application'
applicationDefaultJvmArgs = ["-agentlib:jdwp=transport=dt_socket,address=localhost:7000,server=y,suspend=n"]
mainClassName = "package.ApplicationRunner"
_
コマンド_gradle build run
_を使用して、IDEまたはコマンドラインからアプリケーションを実行します
これで、IDEは、スプリングブートアプリケーションが実行されるリモートJVM(ポート7000上)に接続できます。また、静的ファイルのホットデプロイメントもサポートしています。
または、依存関係がIDEで適切に管理されている場合、intelliJからメインクラスを実行することもできます。メインクラスは、SpringApplication.run("classpath:/applicationContext.xml", args);
を呼び出すmainメソッドを含むクラスです
JRebelを使用することもできます-Spring Beanを含むすべての変更(より良いホットスワップ)を再ロードします。 IntellijとEclipseの両方に簡単に統合できます。
pom.xmlでこのspring-boot-devtoolsタグを使用してみてください
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
http://mytechnologythought.blogspot.com/2017/07/how-to-run-server-of-spring-boot-auto.html
Thymeleaf (テンプレートエンジン)、 個人開発者向けのjRebel をお勧めします。 Thymeleafテンプレートファイルは、単なるHTMLリソースです。したがって、テンプレートファイルを編集するとすぐに変更されます。
1.3.0から。 (現在はマイルストーン2にあります)、lightweigtアプローチとしてspring-boot-devtoolsを使用できます- docs または this blogpost を参照してください。単に1.3.0以上にアップグレードしてください。そして、pom.xmlに次を追加します。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
RunBoot ...でSpringBootApplicationを起動するよりも大丈夫です。
Mavenを使用している場合、pom.xmlのspring-boot-maven-pluginは、ホットスワップを取得するために次のようにする必要があります。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.0.RELEASE</version>
</dependency>
</dependencies>
</plugin>
そして、thymeleafを使用している場合、これをアプリケーションのプロパティに追加します。
spring.thymeleaf.cache=false
しかし、覚えておいてください。実稼働環境ではこれを使用しないでください。
Springbootアプリケーションでホットスワップを実行する方法
Gradleを使用する場合、依存関係に以下を含めます:_compile group: 'org.springframework.boot', name: 'spring-boot-devtools', version: '2.0.1.RELEASE'
_&providedRuntime('org.springframework.boot:spring-boot-starter-Tomcat')
application.propertiesプロパティを追加_spring.devtools.restart.additional-paths=.
_
Gradleをビルドしてから、bootRunとしてアプリケーションを実行します
アプリケーションは、クラスの変更時にホットスワップを実行する準備ができています