「春を孊ぶこずはナンセンスなレッスンです」-プロゞェクトのむンテリアキッチンの春の䞻な䌝道者、ゞョシュロング

今日、私たちの仮想スタゞオで、䞖界で最も有名なSpringスピヌカヌはJosh Longです。







圌の報告は䞖界䞭でJava䌚議を開いおいたす。 コミュニティの質問に答えるのは圌で、YouTubeでSpring Tipsをやっおいたす。毎週読んでいるのは圌の「今週の春」です。







ずころで、ゞョシュは私たち自身の「今週のJava」ですべおの玠材を䜿甚するこずを蚱可したしたが、圌はこのデヌタを「15分ダむゞェスト」圢匏に圧瞮するこずができなかったほどのボリュヌムず深さでそれを行いたす。







時々、圌はすべおの郜垂に同時にいお、レポヌトを読んだり、蚘事を曞いたりしおいるようです。 今日は、圌がそれをどのように行うかを理解したす。 「コヌドの順化」、Springの驚くべき生存性の理由、そしお圌がれロからのグロヌバルな曞き換えやその他の興味深いトリックなしで䜕幎も生きおきた方法に぀いお孊びたす。















䌚員



Josh Long、Pivo​​talのSpring Developer Advocate







Evgeny Trifonov、Oleg Chirukhin-JUG.ruグルヌプの線集者












倚くの人が旅行するこずを誰もが知っおいたすが、昚幎蚪問した䌚議の数、フラむトの数など、統蚈情報を提䟛できれば興味深いでしょう。









いい質問です。 私はその幎に出垭したすべおの䌚議を蚘録するテヌブルを持っおいたす。 アシスタントのTashaが、スケゞュヌルずこのテヌブルの敎理を手䌝っおくれたす。 それでは、電話でこのプレヌトを開いおみたしょう...二癟四十。 2018幎、珟時点では、240の異なるむベントに参加したした。 これらの䌚議のいく぀かはオンラむンで行われたすが私たちの䌚議のように、私はほずんどに飛ばなければなりたせん。 今幎、私は50䞇マむル以䞊飛行したした。 地球から月たでの距離を確認しおみたしょう...それは23侇9千マむルなので、月に行ったり戻ったりするこずができたす。












「月ぞず春から垰りたす。」 トヌルキンの本の良いタむトル。








あなたはそんなに飛ぶので、航空䌚瀟はあなたに特別なオファヌを提䟛したすか









たあ、私はサヌビスに぀いお文句を蚀いたせん。 私はよくナナむテッド航空で飛んでいたすが、圌らにはグロヌバルサヌビスプログラムがありたす。 あなたは招埅状を受け取るこずによっおのみそこに着くこずができたす-あなた自身がそれを自分で求めるこずはできたせん、そしおそれがどんな基準を持っおいるかは䞍明です。 毎幎、最も頻繁に飛ぶ人を招埅したす。 昚幎、誰かが䞖界䞭の最も頻繁な顧客の1を遞択するず蚀いたした。 たたは、コストの量でフィルタリングするこずもできたす。 いずれにせよ、圌らは私をずおもよく扱っおくれたす。 いいね しかし、この堎合でも、ほずんどの人にずっお、フラむトは負担になるず思いたす。 それは間違いなく私に関係しおいたす。 私はフラむト自䜓のために飛ぶのではなく、Springを䜿う人々に䌚うために。 そのような機䌚があればテレポヌトしたす。 人生はもっずシンプルで面癜いものになるでしょう。












Hyperloopを埅぀正圓な理由。









はい、しかしこれは長い時間埅たなければなりたせん。












Springに近いトピックに぀いお話したしょう。 あなたはそれに぀いお䞖界䞭の人々ず話したす-その有病率に地域的な違いはありたすか









私は蚀いたせん。 Springは垞に100オヌプン゜ヌスであり、むンタヌネットで動䜜する゜フトりェアを䜜成しおいる限り、Springは䞖界䞭で成功し続けたす。 確かに、地域の特異性が顕著である他のオヌプン゜ヌスプロゞェクトがありたす。 珟圚統蚈を確認するこずはできたせんが、ロシアではGridGainが非垞に䞀般的であるように思われたす。












はい、そうです。









䞭囜では、MyBatisは非垞に人気がありたす。 アメリカずペヌロッパでは10幎も芋おいたせんが、䞭囜では春ず同じくらい䞀般的です。 そしお実際、MyBatisには䜕の問題もありたせん。それは高速で匷力です。












MyBatisがGridGainず連携するプロゞェクトを行いたした。









笑だから、あなたはそれらの䞡方を䜿甚したす-玠晎らしい 私はこれらのテクノロゞヌの䞡方が奜きです。 MyBatisに察する通垞のサポヌトはありたせんでした。私は䞭囜のさたざたな倧䌁業に玠晎らしいこずを垞に䟝頌しおいたした。なぜ圌らはSpringでMyBatisを必芁ずしたのですか。 他にも倚くのオプションがありたすが、Hibernateは非垞にうたく機胜し、MyBatisは実際には西掋では䜿甚されおいたせん。 結局、プログラムを䜿甚したら、その正垞な動䜜を確保する必芁があるず刀断したした。 MyBatisのSpring Boot Starterの゜ヌスを芋るず、そこに私の名前が衚瀺されたす。 東でこのプログラムを必芁ずする人々がそれで正垞に動䜜できるようにしたかった。 䞀般的に、私の仕事のかなりの郚分は、旅行䞭にさたざたな囜で発芋した皮類に由来しおいたす。












あなたは、SpringプロゞェクトのPivotal Developer Advocateです。 これは実際にはどういう意味ですか 正確に䜕をしおいたすか









難しい質問です。 Developer Advocateの抂念は、Apple、特にMicrosoftのおかげで広たりたした。 箄30幎前、Microsoftが本圓の匷さを持っおいるのは開発者だず気づいたずきに始たりたした。 プラットフォヌムを成功させお䟿利にしたい堎合、開発者はこのプラットフォヌムで新しい䟡倀あるものを䜜成する必芁がありたす。 したがっお、プラットフォヌムの利点を圌らに玍埗させる必芁がありたす。 マむクロ゜フトは、さたざたな方法で開発者を動機付けようずし始めたした。 圌らはVisual Studioを非垞に安くしたした。぀たり、手頃な䟡栌のツヌルを提䟛したした。 圌らは、Windowsで䜜業できる倚くの非垞に興味深いAPIを䜜成したした。 䞀般に、Microsoftはコミュニティずの共同䜜業が必芁であるこずに気付きたした。 人は゜フトりェアを信甚したせんが、他の人は信甚したす。 人々は゜フトりェアに察する感情的な愛着を持っおいたせん。 ホテルの郚屋で孀独にプログラムを曞くだけで有名になり、それを必芁ずする人なら誰でもドキュメントを芋぀けるこずができるのは奜きなだけ想像できたす。 しかし、実際にはこれは通垞起こりたせん。 私の責任の重芁な郚分は、コミュニティの人々ずのコミュニケヌションです。 私は人々の蚀うこずを聞いお開発者に䌝え、開発者の蚀うこずをコミュニティに䌝えたす。 蚀い換えれば、私は䞀皮の乗り物です。



Springチヌムは奇劙で矎しいです。 圌女はすでに10幎半以䞊です。 最初は、圌女は非垞に小さく、開発者自身がコンサルティングに埓事しおいたした。 圌らは垞に他のチヌムず協力し、独自の゜フトりェアの䜜成を支揎したした。぀たり、実際の問題を解決し、象牙の塔に閉じ​​蟌められたせんでした。 圌らは、どの゜フトりェアが必芁であるかを前もっお知るふりをしたせんでしたが、他の人が本圓に必芁ずするものを曞き、圌らの利益は垞に圌らの䞻芁な基準でした。 圌らはクラむアントず問題解決の苊しみを共有したした。 圹に立たないものを䜜成したせん。 そしおこれは、ご存知のように、゜フトりェアを䜜成する際にしばしば問題になりたす。 実際、最初のSpringチヌムは既に開発者支持者で構成されおいたした。 それらはプログラマが通垞衚すものずは䌌おいたせんでした。 はい、圌らは才胜のある開発者でしたが、同時に圌らは自分のアむデアを他の人々ず熱心に話し合い、プレれンテヌションに出垭し、人々に䌚い、知り合いを䜜り、察話を行いたした。 これにより、Springはすぐに倧きな人気を埗たした。



問題は、このアプロヌチがうたくスケヌルしないこずです。 すべおの開発者が、旅行、チャット、および䌚議の時間の半分を費やすこずは䞍可胜です。 私がチヌムに参加した時点で、Springはオヌプン゜ヌスプロゞェクトであるため、すでにSpringのコヌドを曞いおいたした。 さらに、私はすでに本を出版し、蚘事を曞き、プレれンテヌションを行いたした。 ですから、私はすでにSpringをできる限りコミュニティに玹介し、できるだけ倚くの人々にSpringを知っおもらう機䌚を䞎えようずしたした。 そのため、Springチヌムは私にすべお同じこずをするように招埅したしたが、継続的か぀金銭的です。 私は80が開発者擁護者であり、20がプログラマヌであるず思いたすが、残りの開発者擁護者チヌムは20および80がプログラマヌです。



党䜓ずしお、私の仕事はコミュニティず連絡を取り合うこずであり、これを行うにはさたざたな方法がありたす。 私は私の6番目の本を曞いおいたす、それはリアクティブスプリングブックず呌ばれおいたす。 私の以前のものは、クラりドネむティブJavaず呌ばれるO'Reillyによっお公開されたした。 Safari Books Onlineで芋るこずができるビデオチュヌトリアルを倚数䜜成したしたが、それぞれ4〜5時間かかりたす。 さらに、毎週氎曜日に、YouTubeにSpring Tipsビデオを投皿したす 。各ビデオは、゚コシステムの特定の狭い偎面に特化しおいたす。 それらは通垞45分から1時間続き、毎幎少なくずも2シヌズン、時には3シヌズンを行いたす。 したがっお、毎幎、2週間ごずに、䌚議での完党なレポヌトに十分な資料を準備しおいたす。 2011幎1月から毎週火曜日に、䟋倖なく、 「今週の春」ずいう新しいブログ゚ントリを䜜成したす。このブログ゚ントリでは、゚コシステムで最も興味深いものすべおを確認したす。 私は他のブログも運営しおいたす。最埌の2晩はちょうどそれをやっおいたす。 さらに、私はコヌドを曞き、䌚議で講挔したす。 したがっお、私の仕事にはさたざたな掻動が最倧限に含たれおいたすが、自分の掻動を1぀に制限するこずもできたす。 ブログを曞いたり、動画を䜜ったりする人がいたすが、圌らはずおもうたくやっおいたす。 䞀郚の人は旅行すらしたせんが、オンラむンでセミナヌを実斜しおいたす。 私のアプロヌチは他のアプロヌチずは異なりたすが、最終的には、この掻動はすべお同じ目暙を远求したす。












ずころで、私の責任には、チュヌトリアルの䜜成、ブログ䜜成なども含たれたす。 私にずっおそれは非垞に難しく、任意の時間がかかる可胜性がありたす。 あなたにずっおどれほど難しいですか 1぀のSpring Tipsビデオを準備するのにどれくらい時間がかかりたすか









蚀うのを忘れおいたした-新しいポッドキャストを入手したしたが、ただ䜕も出おいたせんが、7぀のむンタビュヌがすでに準備されおいたす:-)準備の時間に関しおは、さたざたな方法で起こりたす。 取り䞊げようず決めたトピックにすでに粟通しおいる堎合は、座っおすべおを2、3回蚘録する必芁がありたす。垞に倚くの間違いを犯したす。 1週間に1回、぀たりわずか4時間かかりたす。 しかし、他のケヌスではこれでは十分ではありたせん。 時々私は問題を研究し、それを䜕ヶ月もメモし、それからこの仕事はすでに終わっおいるので、なぜこれらのメモのビデオを䜜らないかを決めたす。 あなたがそうであるように、私は垞に孊んでいたす。 しかし、ビデオのために特別に䜕かを孊ぶ必芁がある状況はたれです。 ここで最も難しいのは、孊習プロセス自䜓ではなく、座り蟌んでトピックを掘り䞋げるために必芁なものを決定するこずです。



私たちのチヌムのプログラマヌは、これたで誰も䜜成したこずがないものをリリヌスするこずがありたす。 この状況では、圓然、人々は質問を持ち、これらの質問はデフォルトでプログラマヌに投げかけられたす。 そしお、すべおを説明するビデオを䜜成し、それをネットワヌクに事前アップロヌドしお、人々がお互いを知る時間があるようにしたす。 明らかに、この状況では、私も孊ぶ必芁がありたす-私たちはたったく新しい䜕かに぀いお話しおいるからです。












珟圚、Springにはいく぀のプロゞェクトがありたすか









いい質問です。 数十個だず思いたす。 非垞に専門的なモゞュヌルがあり、その䞀郚はコミュニティによっお開発され、䞀郚はPivotalのSpringチヌム、たたは他の倧䌁業によっお開発されおいたす。 Google GCPのすべおのサポヌトはGoogleで行われ、Microsoft AzureのサポヌトはMicrosoftで行われたした。 しかし、たずえばMyBatisのように、コミュニティによっお倚くが開発されおいたす。 さらに、Neo4jグラフデヌタベヌス甚のモゞュヌルであるSpring Data Neo4jなど、個別のモゞュヌルがありたす。 これはSpring Dataプロゞェクトの䞀郚ですが、Neo4jずのコラボレヌションで行われ、圌らはこのプロゞェクトの䞻な仕事をしたした。圌はちょうどgitリポゞトリに䜏んでいたした。 そのような䟋はたくさんありたす。



Spring Bootに関しおは、自動構成ず呌ばれる玠晎らしいメカニズムがありたす。 それは人々が圌らが取り組むものをグルヌプ化する䟿利な方法を提䟛したす。 ナヌザヌはJARファむルをクラスパスにダりンロヌドするだけで、実行䞭のSpring Boot Appに自動的に远加されたす。 ゚コシステムにはこのような自動構成がたくさんありたすが、重芁な郚分に぀いおは知りたせん。 プラグむンのように機胜したす。












そしお、このようなさたざたなプロゞェクトすべおでナヌザヌを理解する方法は 䞀般的な構造やアむデアはありたすか









ほずんどの堎合、すべおのプロゞェクトが必芁になるわけではありたせん。 目暙を指定し、それに基づいお目的のプロゞェクトを遞択したす。 人々が「春を孊ぶ」こずを詊みるずき、私はそれが奜きではありたせん-これは無意味な運動です。 質問は次のようになりたす。たずえば、REST APIを曞く必芁がありたす。 私の最初のステップはspring.io/guidesに行くこずです。そこでは 10〜15分かかるシンプルで手頃な䟡栌のガむドを芋぀けるこずができたす。 知っおおく必芁のあるすべおのものがありたす。どのコヌドを曞くか、どのフォルダヌに入れるか、IntelliJやEclipseなどでそれを行う方法です。 これらのガむドをすべおの人がアクセスできるようにするため、すべおを詳现に説明し、䜕も省略しないようにしたす。 JMS、Neo4j、セキュリティ、サヌキットブレヌカヌ、Kafkaなど、あなたが䜕をするにしおも、トピックごずに個別のガむドがありたす。 タスクを決定し、適切なガむドを遞択したす。 Springに぀いおではなく、システムず統合するものに぀いお考える必芁がありたす。Springは、この統合を可胜にする単なるツヌルです。 したがっお、「Springを孊習する」ずいう意味はありたせん。特定のタスクを簡玠化できる堎合は、それを䜿甚する必芁がありたす。












あなたの意芋では、春のどのプロゞェクトが最も有望ですか たたは最も過小評䟡されおいたすか









Spring Retryラむブラリは非垞に人気がありたす。 もずもずはSpring Batchで開発されたした。 Spring Batchを䜿甚したこずがあるかどうかはわかりたせん。たずえば、ファむルシステム、XML、CSPファむルなどのドキュメントなど、倧量に順次送信されるデヌタを凊理できたす。 このツヌルを䜿甚するためのオプションの1぀では、レコヌドを読み取っおから曞き蟌みたすたずえば、Webサヌビスからメッセヌゞキュヌぞ。 このデヌタの凊理には数時間かかる堎合があり、最埌の1぀の゚ラヌのためにシステムが倜間に行われたすべおの䜜業をロヌルバックした堎合、非垞に望たしくありたせん。 できたせん Spring Batchはデヌタパケットを凊理し、1぀ではなく10たたは1000のレコヌドを凊理したす。 数千のレコヌドの凊理が倱われた堎合でも、残りはすべお保存されたす。 さらに、パッケヌゞシステムを䜜成するずきは、倱敗する可胜性のある他のサヌビスにアクセスする必芁があるこずに留意する必芁がありたす。 これにはSpring Retryがありたす。 このラむブラリを䜿甚するず、サヌビスを繰り返し呌び出すこずができたす。 さらに、指数関数的なシャッタヌスピヌドを䜿甚できたす。 Spring Batchに加えお、Spring RetryはSpring Integration、Spring Cloud Stream、Spring Cloud Data Flowでも䜿甚されたす。 最埌の2぀では、Spring Retryが他の䜕かず関連しおいるため、サポヌトしおいたす。 したがっお、このラむブラリは倚くのSpringプロゞェクトで䜿甚されおおり、誰もがそれを知っおいるかどうかはわかりたせん。 Spring Retryは非垞に頻繁に䜿甚されるラむブラリであり、芋萜ずされるこずもありたす。 䞀般に、倚くの異なる事埌察応​​がありたす。 圌らは通垞、最も興味深いです。












なぜ正確に反応䞻矩なのか









どこにでも反応性がありたす。 Springの利点は、Springを䜿甚しおプロゞェクトを開始および終了できるこずです。 今週、Facebook RSocketプロゞェクトをサポヌトするこずを発衚したした。 これはgRPCの完党に反応する類䌌物ですが、非垞に柔軟です。 パブ/サブ、ストリヌミングデヌタ、クラむアント芁求/応答に䜿甚できたす。䞀般的に、さたざたなメッセヌゞングパタヌンを実装できたす。 そしお、それはFacebookで䜿甚されおいたす。 2぀のバンドルがあり、1぀はC ++に、もう1぀はJavaにありたす。 Javaのものは、リアクティブラむブラリであるReactorを䜿甚しお蚘述されおいたす。 圌女はSalesforceを䜿甚しおいたす。 もちろん、他のオプションもありたす。 GoogleからgRPCに぀いお聞いたこずがありたすか これは非垞に高品質で興味深いものですが、リアクティブではありたせん。デフォルトでは、リアクティブ型ではうたく機胜したせん。 Salesforce gRPCにはこの欠点はありたせん。 圌はSpring Reactorに基づいおサヌビスを䜜成するコンパむラを持っおいたす。 そのため、FacebookずSalesforceの䞡方は、Reactorをニヌズに合わせお拡匵できたした。



Reactor自䜓は、私たちの最も興味深いプロゞェクトの1぀です。 RxJavaは以前に登堎したしたが、Reactorはリアクティブスレッドサポヌトを提䟛した最初の補品です。 これは䞻に、玠晎らしいプログラマヌであるRxJavaプロゞェクトマネヌゞャヌのDavid KarnockがReactorで私たちず協力しおいたために起こりたした。 そのため、私たちの゚コシステムで起こったすべおの新しくお興味深いこずのかなりの郚分が䜕らかの圢でReactorに觊れたした。 このおかげで、このプロゞェクトは倧芏暡なシステムを䜜成する䌁業にずっお非垞に魅力的なものになりたした。 Reactorは、Spring WebFluxフレヌムワヌクの基瀎にもなっおいたす。 たた、Reactorに基づいお、リアクティブメッセヌゞング、リアクティブWeb゜ケット、Spring Cloud Stream、リアクティブサヌキットブレヌカヌなどをサポヌトしたした。これらのコンポヌネントはすべおリアクティブアプリケヌションに統合できたす。 もちろん、Springを䜿甚するこずもできたすが、これらのリアクティブタむプで゚コシステム党䜓を䜿甚するこずを奜みたす。



さらに、最近、反応型ドラむバヌのSQLベヌスのデヌタにアクセスするためのAPIであるR2DBCに぀いお発衚したした。 リアクティブJDBCはただ存圚したせん。 問題は、リアクティブコヌドを䜿甚する堎合、ロックを䜿甚できないこずです。 ロックを䜿甚する堎合、この盞互䜜甚を拡倧しお、スレッド数を増やす必芁がありたす。 スレッドの数を増やすこずでスケヌリングを回避したいだけなので、これは元の目暙ず矛盟したす-これは高すぎたす。 したがっお、R2DBCは、リアクティブなデヌタアクセスを提䟛する抜象化を提䟛したす。 最初に反応するデヌタベヌスドラむバヌがありたす-たずえば、Postgres。 したがっお、スレッドがないため、特にPostgresでR2DBCを䜿甚し、ロックを䜿甚せずにリアクティブSQLで䜜業できたす。 このトピック党䜓は私にずっお非垞に興味深いようです。












おそらく、よくある技術的な質問に答えられるでしょうか 問題の1぀は、耇数のSpringプロゞェクトを䜿甚するず、倚くの泚釈が同時に発生するこずです。 それぞれの機胜を理解するのは難しくなりたす。Ctrlキヌを抌しながらクリックしお定矩に移動するこずはできたせん。 そのような状況でどのように行動するのですか









`--debug`オプションで実行する必芁がありたす。 珟圚、Spring゚コシステムの倧郚分は自動構成ずしお存圚しおいたす。 䞀郚はむンポヌトされた蚭定のようなものです。この堎合、泚釈をクリックするず、「@ Import」ずいう碑文が衚瀺され、そのクラスにそのクラスが瀺されたす。 それをクリックするず、䜜成されたオブゞェクトが衚瀺されたす。 ただし、Springは自動構成メカニズムを介しお動䜜する堎合がありたす。この堎合、泚釈は䜜成されたせん。 ラむブラリずクラスパスのみがありたす。 それから、䜕が起こっおいるのか、なぜ起こっおいるのかを把握するのは本圓に難しいです。 しかし、人々がこれを理解できるように、できる限り簡単にしたいず考えおいたす。 このために、アプリケヌションの起動時に入力する必芁がある「--debug」パラメヌタヌがありたす。 次に、起動時にアプリケヌションによっお実行されるすべおのステップが蚘述されたレポヌトが衚瀺されたす。 アプリケヌションは、特定のフィヌルドたたはクラスが存圚するかどうかを確認し、これに応じお、オブゞェクトを䜜成するかどうかを決定したす。 レポヌトには、どの条件が満たされたか、満たされおいないか、どの構成がチェックに䟝存しなかったかが瀺されたす。 たずえば、Kafkaぞの接続が機胜しない理由を理解できない堎合、察応する条件を確認できたす。クラスパスに必芁なクラスがない可胜性がありたす。












さお、トロヌリングの質問が少しありたす。 Springの反察者は、 @Autowired



どこでもどこでも簡単に䜿甚できるため、䜎品質のアヌキテクチャの原因であるずしばしば䞻匵したす。 この意芋に同意したすか 10幎前、アヌキテクチャは3぀の局で䜜成され、倀がコンストラクタヌからコンストラクタヌに転送され、DTOが䜜成されたした。 Springを䜿甚するず、これをすべお取り陀くこずができたす。 それは良いですか悪いですか









Springはツヌルです。 これにより、より倚くの人が本番環境に来お正垞に動䜜する゜フトりェアを䜜成できるようになるため、有害ではないず思いたす。 近幎、䜕癟䞇人もの人々がそれを䜿甚しおアプリケヌションを䜜成し、すべおがうたく機胜しおいたす。 春党䜓が有害であるず考えるのはばかげおいるず考えるず、そのような意芋は無知ずは蚀えたせん。



Springでは、たったく明瀺的なワむダリングを䜜成できたす。 特定のオブゞェクトがどこから来たのかわからないこずが心配な堎合は、自分でバむンドできたす。 あるメ゜ッドが別のメ゜ッドを呌び出し、呌び出されたメ゜ッドの出力倀がビンになるJava構成を䜜成できたす。Springが凊理したす。 同じビンを繰り返したたは千回呌び出しおも、このオブゞェクトがシングルトンである堎合、耇数のリンクはありたせん。 あなたはすべおを明瀺的にしたい-それを行うこずができたす。 必芁に応じお、さらに退屈なオプションであるXMLを䜿甚できたす。 芁するに、「@ Autowired」を䜿甚したくない堎合は、これを完党に回避できるずいうこずです。



最も䞀般的な方法でSpring Bootを䜿甚する堎合、Beanは1぀のみになりたす。 `ConnectionFactory`型のBeanが必芁であるこずはご存知です-この堎合、型ごずにむンゞェクションを行うのに問題はありたせん。 ただオブゞェクトは1぀しかありたせん。1぀のConnectionに察しお2぀の `ConnectionFactory`はありたせん。 2぀のHibernateセッションはありたせんので、 `HibernateSession`の挿入を劚げるものはありたせん-単䞀のむンスタンスに存圚したす。 すべおを明瀺的にしたい堎合は、 `@ Qualifier`アノテヌションを䜿甚できたす。 それを䜿甚しお、タむプ別に泚入するものをマヌクしたす。 これにより、異なるビンの実装を互いに区別するこずが可胜になりたす。 ある堎所のアプリケヌションがiTunesず、別の堎所Amazonず3番目でAndroid Playストアず通信できるサヌビスがあるずしたす。 異なるタむプの3぀の異なるBeanになりたすが、それぞれに `@ Qualifier`アノテヌションがありたす。 さらに、この泚釈は別の泚釈に重ね合わせるこずができるため、型の安党性が確保されたす。 この型をバむンドし、その䞊に泚釈を付けたす。Beanが䜜成されるず、消費者のサむトを含め、 `@ Qualifier`泚釈が付けられたす。 したがっお、これらの泚釈はリンクを提䟛し、プログラムの実行䞭に3぀の実装が存圚する堎合でも、必芁なものを芋぀けるこずができたす。












぀たり、䞀般に、あなたの意芋では、柔軟性はプラスの機胜です。 あなたずSpringチヌムは、Zen Zenのような基本原則を順守しおいたすか









はい、固執したす。 ちなみに、私は90幎代埌半からPythonでプログラミングをしおおり、Python Zenの倧きな支持者であり、非垞に正しい䞀般的な考え方を持っおいたす。 質問に関しおは、Springの共同蚭立者であり、プロゞェクトに携わった2人目の開発者であるJÃŒrgenHöllerに぀いおお話しする必芁がありたす。 これはずおも優しい人で、ずおも静かで、私がコミュニケヌションを取らなければならない最高の人の䞀人です。 たずえば、䌚議で圌に䌚った堎合、圌ず話すのは非垞に簡単です。 同時に、圌には匷力な知性があり、春ぞの圌の貢献を過倧評䟡するこずは困難です。 JAXカンファレンスは、非垞に重芁ですが、もちろんゞョヌカヌには届きたせんでした:)-圌に、これたで誰も受け取ったこずのない仕事に察しお特別な賞を授䞎したした。 通垞、賞は特別なカテゎリヌで䞎えられたすが、これはカテゎリヌがなく、ナルゲンにのみ属したす。 SpringはJava゚コシステムで唯䞀、15幎も曞き盎されおいないプロゞェクトです。必芁がないためです。 ナルゲンには、モゞュヌルの蚘述方法、型の衚珟方法、䞀般的には䜕十幎もの間必芁に応じお簡単に倉曎できる高品質のコヌドのベヌスを䜜成する方法に぀いお非垞に明確な考えがありたす。 Java゚コシステムには、このようなプロゞェクトは他にありたせん。 プロゞェクトの倧郚分はもはや存圚せず、れロから曞き盎されたプロゞェクトの䞭でも、15幎生きおいる人はほずんどいたせん。



最初から非垞にきれいに曞かれおいたため、曞き盎されずに15幎だけ続いたのはSpringだけです。 ナルゲンは、私たちが埓ういく぀かの基本原則を教えたしたモゞュヌルの䜜成方法、実装パッケヌゞの䜜成方法公開郚分ずは察照的に、APIの衚面レベルの蚘述方法、APIの蚭蚈タむプ、䜿甚するパタヌン。 Springを䜿甚するず、必然的にデザむンパタヌンに粟通するこずになり、垞にそうでした。 パタヌンパタヌンの䟋がすぐに思い浮かびたす。 Spring Integrationぱンタヌプラむズ統合パタヌンを玹介し、Spring MVCはMVCを玹介したす。 これらのパタヌンはすべおフレヌムワヌクの䞀郚であり、実蚌枈みのプラクティスに基づいお䜿甚したす。 私たちの犅は、ナルゲンが教えおくれた原則です。 この点で、私たちはすべお圌の孊生です。 ナルゲンは、コヌドの蚘述方法に察する少し奇劙なアプロヌチで知られおいたす-圌のマナヌのために、特別な甚語「jurgenize」が生じたした。 私たちのチヌムには、優秀な経隓を持぀非垞に優秀な人が倚く、すでに孊䜍ずはげたパッチを持っおいる人もいたす。 それにもかかわらず、ナルゲンはコヌドに独自の倉曎を加えたす。 スペヌスの远加やクリヌニングなどの小さなこずもありたすが、コヌドを最初から1,000倍以䞊曞き盎したり、コヌドの䜜成者を倉曎したりするこずはありたせん。぀たり、元の䜜成者の名前でコミットしたす。 これらの堎合、コヌドは「合法化された」、぀たり修正されたず蚀われおいたす。 JÃŒrgenのおかげで、私たちのコヌドはずおもきれいです。 コヌド分​​析ツヌルの堎合、非垞にクリヌンなコヌドがあるため、Springで少なくずも䜕らかの誀動䜜を芋぀けるこずは高品質マヌクず芋なされたす。 䞀般に、原則を詳现に説明するこずはできたせんが、それらはそこにあり、ナルゲンによっお定められおおり、すべおのSpringプロゞェクトがそれらに埓っおいたす。 Spring Bootに関しおは、モゞュヌルを䜜成するための非垞に正確なルヌルがあり、これをスタヌタヌず呌びたす。












OK、答えおくれおありがずう。 最埌の質問はパフォヌマンスずJava 11に぀いおです。私の知る限り、Springは垞に実行時にコンテキストを生成したす。 叀い銀行プログラムでは、これに数分から数時間かかる堎合がありたす。









おい 信じられたせん












正盎、自分の目で芋た。









しかし、春になるこずはできたせん。 恐らく、Hibernateで恐ろしいこずが行われたす。 Beanは数癟䞇単䜍で生成でき、空のBeanは非垞に迅速にコンパむルおよび実行できたす。 デヌタベヌス、怜蚌などから情報をロヌドするには時間がかかりたす。これにより、Springが遅延する可胜性がありたす。 しかし、Spring自䜓は非垞に高速です。












はい、Hibernateには䜕らかの恐怖があったず思いたす。 それにもかかわらず、Springは30秒、時には1、2分で開始したす。それでもただかなり長い時間ですよね。 たずえば、Dockerで実行する堎合、コンテナをすぐに起動する必芁がありたす。 Springの起動時間を短瞮するこずは可胜ですか









Springを開始するのに2秒もかかりたせん。 たた、Spring Cloud Functionを䜿甚するず、この時間を0.5秒以䞋に短瞮できたす。 たずえば、Spring Cloud FunctionのSpring Bootなど、0.5秒で問題なく実行されるプロゞェクトがありたす。 だから、再び、問題は春ではありたせんが、あなたが圌らに䜕をするか、バックグラりンドで䜕が起こっおいるのですか-むンタヌネット䞊の別のデヌタ゜ヌスにアクセスできたすか、むンタヌネットからファむルをダりンロヌドしたすか、グリッドにデヌタをアップロヌドしたすか。 小芏暡なマむクロサヌビスのみを行う堎合、システムは非垞に高速に動䜜するはずです。 アプリケヌションの実行時間が非垞に長い堎合、䜕か問題がありたす。












なるほど。 ずころで、GraalVMずAOTに぀いお聞いたこずがありたすか









はい もう少しお話ししたす。SpringFuプロゞェクトがありたす。 圌は実隓的で、春のヒントシリヌズから圌に関するビデオを撮圱したした。 Kotlinで䜜成したしたが、珟圚はJava APIを備えおいたす。 このプロゞェクトは、GraalVMなどの環境甚に䜜成されたした。 Spring Fuは、動的に生成されたプロキシたたは「@ Configuration」を䜿甚したせん。 GraalVMのネむティブむメヌゞゞェネレヌタヌは、ロヌドされるクラスを知る必芁がありたす。 ただし、cglibたたはByte Buddyを䜿甚しお動的にロヌドする堎合、これによりGraalVMの䜿甚が困難になりたす。 Hibernate、Spring、および動的に生成されたプロキシを䜿甚する他のすべおのラむブラリは、ネむティブむメヌゞの䜜成にはあたり適しおいたせん。 したがっお、春颚にはこのようなものはありたせん、これは盎接述べられおいたす。 ただSpringを䜿甚しおいたすが、アプリケヌションを構築する方法は異なりたす。 たた、Spring Fuの利点の1぀は、GraalVMずうたく機胜するこずです。 そしお、今すぐアプリケヌションが起動したす。 ぀たり、通垞は即座に完党にメモリに栌玍されるず GraalVMのネむティブむメヌゞゞェネレヌタヌは、開発の非垞に初期の段階にあるこずに泚意しおください。 このため、GraalVMによっお起動されたアプリケヌションはすぐにロヌドをすぐに開始し、実行時には以前ず同じ速床になるず思われるため、困難が生じるこずがありたす。 しかし、GraalVMランタむムではJVMを䜿甚しなくなったため、システムの動䜜が異なるため、そのようにはなりたせん。 したがっお、このプロゞェクトの正垞性をテストしおください。ただし、これは無料の起動加速ではないこずに泚意しおください。 それでも、私はGraalVMを喜んでいたす。圌らのチヌムは、フレヌムワヌクずの連携を改善するために倚倧な努力を泚いでいたす。












もちろん、最埌の質問はJava 11に぀いおです。









はい、圌女は矎しいです。












その䞭でSpringにずっお䜕が䟿利ですか









Spring開発者にずっお、このテクノロゞヌたたはそのテクノロゞヌを遞択する䞻な基準は2぀ありたす。1。ビゞネスニヌズに適しおいるかどうか、2。プログラマヌずしお適しおいるかどうか。 最初の基準ずしお、この技術がより高速で安定性を提䟛するかどうか、長期的なサポヌトがあるかどうか。 これらはすべおJava 11にありたす。 Java 8のサポヌトはたもなく終了するため、長期サポヌトのある次のリリヌスにアップグレヌドするこずは理にかなっおいたす。 ずころで、私の友人、次のバヌゞョンにアップグレヌドする堎合は、OpenJDKアセンブリを䜿甚しおください。あらゆる点で優れおいたす。 正しいバヌゞョンを入手するのは非垞に簡単です。すでにTwitterでそれに぀いお曞いおいたす。 このリリヌスはSpringで非垞にうたく機胜したす-安定しおいたす。 少なくずもhttps://start.spring.ioにアクセスしお 、新しいプロゞェクトを生成し、Java 11を遞択するず動䜜したす。 Java 11のサポヌトは、IntelliJずEclipseの䞡方で利甚できたす。



2番目の基準に関しおは、Java 11のSpring開発者にずっお倧きな倉曎はありたせん。 `var`ずHTTPクラむアントが登堎したのはいいこずですが、Springは既にリアクティブなWebクラむアントを持っおいるので、HTTPクラむアントの恩恵を受けるかどうかはわかりたせん。 Java 10ずJava 9には䟿利なものがいく぀か远加されたした。さらに、Javaプログラムをスクリプトずしお実行できるようになりたした-これは悪くありたせん。 これがSpringで理にかなっおいるかどうかはわかりたせん-䞀方で、そうではありたせん。 それがどのように芋えるか、私にはわかりたせん。












SpringがJava 11に切り替えるのは困難でしたか









いや Springの䞭心には、非垞に高品質のラむブラリず゚コシステムがありたす。 Springフレヌムワヌク自䜓はクラスパスずモゞュヌルパスの䞡方をサポヌトしたすが、個人的にはモゞュヌルパスの䜿甚はお勧めしたせん。 正しく䜿甚するには、他のすべおのものもモゞュヌルパスをサポヌトする必芁がありたす。 そしお、これはただ䞍可胜です。珟圚、ラむブラリでモゞュヌルパスのサポヌトを提䟛しおいる人は少なすぎたす。 クラスパスモヌドは非垞にうたく機胜したす。 CGLib、AspectJ、およびJAXB XMLラむブラリには、Java 9に切り替えたずきに誰もが抱えおいた非垞に暙準的な問題がありたした。これらの問題はすべお、昚幎に解決されたため、Java 11ぞの移行が容易になりたした。












ずころで、私たちはJavaの将来のバヌゞョンに぀いお倚くの興味深いこずを蚈画しおいたす。たずえば、LoomプロゞェクトはJavaのファむバヌです。









Java 12になりたすか












おそらくそうではないでしょうが、圌らはこれをかなり長い間行うでしょう。









Kotlinもコルヌチンを䜿甚しおいるため、このプロゞェクトは非垞に興味深いものです。 圌が出おくるずきはい぀でも、圌は倧きな恩恵を受けるでしょう。 リアクティブコヌドを䜜成せずにリアクティブパむプラむンを衚珟できるこずは非垞に重芁です。 個人的には、耇数行の文字列の出珟を楜しみにしおいたす。 たぶんこれは私に蚌蚀するための最良の方法ではありたせん-䟋えば、SQLク゚リなど、倚数の行を必芁ずするコヌドがたくさんありたす。












これは、スラむドショヌ甚に最適化されたコヌドの重芁な郚分があるためです。 レポヌト䞭のスラむドでは、画面䞊に文字列党䜓を衚瀺するず䟿利です。









はい、そうでないず読みにくくなりたす。 IDEでは、それらははるかに良くなりたす。 繰り返しになりたすが、Python、Kotlin、Scala、Groovy-過去20幎のどの蚀語でも耇数行の文字列サポヌトを提䟛しおいたす。 私の意芋では、これは非垞に自然なこずです。












読者にアドバむスをお願いしたすか SpringやPivotalに関係しおいる可胜性があり、Java党䜓に関係しおいる可胜性がありたす。









他のテクノロゞヌず同様に、Springの最倧の郚分はコミュニティです。 技術的には、Springは非垞に興味深いプロゞェクトのセットですが、その長寿の秘theは玠晎らしいコミュニティです。 あなたが耐えられない人々ずそのために通信する必芁がある堎合、誰もあなたの玠晎らしい゜フトりェアを必芁ずしたせん。 したがっお、可胜な限り友奜的になるよう努めおいたす。 プロゞェクトマネヌゞャヌを含む開発者は、Stack Overflowで質問に答え、そこでさたざたなタグを远跡したす。 Gitterにはチャットルヌムがあり、その䞭の各チャットルヌムはGitHubのリポゞトリに察応しおいたす。 たずえば、 https://gitter.im/spring-projects/spring-boot 。 そこで、Spring開発者を芋぀けお、興味のある質問をするこずができたす。







倚くの堎合、プロゞェクトを支揎する方法、Springのコヌドを曞き始める方法を尋ねられたす。 GitHubの「投皿に最適」などのタグには倚くの問題がありたす。 私たちは皆に喜んでいたすが、すべおのプロゞェクトがすべおの人に適しおいるわけではありたせん。䞀郚のバグは他のバグよりも耇雑です。 したがっお、圓瀟ず協力したい堎合は、これらのタグを探しお問題を解決しおください。 それは私たちのコミュニティの補充が発生する方法です。 私たちは、゚コシステムの改善を支揎するすべおの人の仕事を倧切にしおいたす。












広告の分。 ゞョシュロングは、 リアクティブスプリングトヌクでゞョヌカヌ2018カンファレンスに参加したす。 チケットは䌚議の公匏りェブサむトで賌入できたす。



All Articles