タグ付けされた質問 「spring」

Springは、堅牢なJava / Java EEアプリケーションを構築するためのモジュールベースのオープンソースフレームワークです。

7
Springフレームワークは何をしますか?使用すべきですか?なぜですか?
そのため、私はJavaで新しいプロジェクトを開始し、Springの使用を検討しています。なぜ春を検討するのですか?多くの人が私にSpringを使うべきだと言っているからです!真剣に、私は人々にSpringが何であるか、それが何であるかを説明するように試みたときはいつでも、彼らは私にまっすぐな答えを与えることはできません。SpringSourceサイトでイントロを確認しましたが、それらは非常に複雑であるか、本当にチュートリアルに焦点を当てています。いずれも、私がそれを使用する理由、またはそれが私の生活を楽にする方法について良いアイデアを与えてくれません。時々、人々は「依存性注入」という用語をまき散らしますが、これは私をさらに混乱させるだけです。なぜなら、その用語の意味が違うと思うからです。 とにかく、私の背景とアプリについて少し説明します。 しばらくJavaで開発しており、バックエンドWeb開発を行っています。はい、私は大量の単体テストを行っています。これを容易にするために、私は通常、(少なくとも)2つのバージョンのメソッドを作成します。1つはインスタンス変数を使用し、もう1つはメソッドに渡される変数のみを使用します。インスタンス変数を使用する方は、もう一方を呼び出して、インスタンス変数を提供します。単体テストの時間になると、Mockitoを使用してオブジェクトをモックアップし、インスタンス変数を使用しないメソッドを呼び出します。これは私が常に「依存性注入」であると理解してきたことです。 私のアプリは、CSの観点からは非常にシンプルです。小規模なプロジェクト、1〜2人の開発者。主にCRUDタイプの操作で、大量の検索がスローされます。基本的には、一連のRESTful Webサービスに加えて、Webフロントエンド、そして最終的には一部のモバイルクライアントです。フロントエンドをストレートHTML / CSS / JS / JQueryで行うことを考えているので、JSPを使用する予定はありません。HibernateをORMとして使用し、Jerseyを使用してWebサービスを実装します。 私はすでにコーディングを始めており、デモを手に入れたいと思っています。したがって、明らかに時間が重要です。Springには学習曲線がかなりあることを理解していますが、それに加えて、多くのXML構成が必要なように見えますが、通常はペストのように避けるようにしています。しかし、それが私の生活を楽にすることができ、そして(特に)それが開発とテストをより速くすることができるなら、私は弾丸を噛んで春を学ぼうと思っています。 だからお願い。私を教育してください。Springを使用する必要がありますか?なぜですか?

4
重複コードを受け入れることができる例外的なケースはありますか?
私は、3つのAPIを構築する必要があるソフトウェアプロジェクトに取り組んでいます。1つはホームバンキングチャネル用、もう1つは代理店チャネル用、3つ目はモバイルチャネル用です。 エージェンシーAPIは、すべての機能を備えているため、最も完成度の高いAPIです。 ここでのアーキテクトは、共通層(すべてのAPIで共有されるクロスチャネルEJBサービス)を作成しました。ただし、APIは異なります。 現在のところ、API間に大きな違いはありません。大きなチームはエージェンシーチャンネルから始まり、現在はホームチャンネルに適応しています。私たちは、単にホームアプリ専用のオブジェクトを強化しています。それ以外の場合、コードはAPI間で95%類似しています。APIはSpring MVCの上に構築されており、(コントローラー、モデル、およびいくつかのユーティリティ)があります。 基本的に、コントローラーはBOをChannelObject(これを行うのに適切な場所ではないようです)、およびいくつかの追加のユーティリティとシリアライザーへのマッピングBOを実行しています。今のところすべてが重複しています。重複の理由は、APIを独立させたいからだと言っています。「明日、私たちが代理店や携帯電話とは異なる行動を家庭で望むなら、私たちは苦労しません!」 重複コードを受け入れる必要がある場合はありますか?
57 java  api  spring 

4
なぜ依存性注入のためのフレームワークが必要なのですか?[閉まっている]
Inversion of Controlの原則とDependency Injectionをその実装としてさらに読んでいますが、それを理解していると確信しています。 基本的に「クラス内でクラスメンバーのインスタンス化を宣言しない」と言っているようです。むしろ、インスタンス化はコンストラクターに渡され、コンストラクターを通じて割り当てられる必要があります。外部ソースからクラスに「注入」されました。 それがそうであるように思えるこの単純な場合、注釈を使用してこれを実装するspringやguiceのようなフレームワークが必要なのはなぜですか?ここに基本的なものがありませんか?Dependency Injectionフレームワークの使用方法を理解するのに本当に苦労しています。 編集:可能性のある重複について、私の質問はSpringだけでなく一般的なDIフレームワークについて尋ねているため、よりユニークだと思います。Springは単なるDIフレームワークではないため、DIに関係のないSpringを使用したい理由はたくさんあります。

6
どのクラスをSpringによって自動配線する必要がありますか(依存性注入を使用する場合)?
しばらくの間、SpringでDependency Injectionを使用してきましたが、それがどのように機能し、それを使用することの長所と短所を理解しています。しかし、新しいクラスを作成するとき、よく疑問に思う-このクラスはSpring IOC Containerによって管理されるべきか? また、@ Autowiredアノテーション、XML構成、セッターインジェクション、コンストラクターインジェクションなどの違いについては説明しません。私の質問は一般的なものです。 コンバーター付きのサービスがあるとしましょう: @Service public class Service { @Autowired private Repository repository; @Autowired private Converter converter; public List<CarDto> getAllCars() { List<Car> cars = repository.findAll(); return converter.mapToDto(cars); } } @Component public class Converter { public CarDto mapToDto(List<Car> cars) { return new ArrayList<CarDto>(); // do the mapping here …

3
サービス層はすべてのdao例外をキャッチし、それらをサービス例外としてラップする必要がありますか?
Dao、サービス、コントローラーの3つのレイヤーのSpring Webアプリがあります。コントローラーはdaoを直接呼び出すことはなく、サービス層を介して呼び出します。現時点では、ほとんどの場合、処理されないdao例外(ランタイム)があると、エンドユーザーにエラーメッセージを表示するJSPによってキャッチされます。サービス層はすべてのdao例外をキャッチし、それらをサービス例外としてラップする必要がありますか? try { daoInstance.someDaoMethod(); } catch(DataAccessException dae) { throw new ServiceException("message", dae); } ServiceExceptionもランタイムであり、どちらも処理されないと仮定しましょう。ServiceExceptionの代わりにDataAccessExceptionをスローするだけの違いはありますか?私は、プレゼンテーション層がデータアクセス例外を認識すべきでないと考えました。しかし、単にそれらをラップするだけで回復不能な例外をキャッチするポイントは見当たりません。

5
どのレイヤーに検証を配置する必要がありますか?
Spring Bootを使用してRest APIを作成し、Hibernate Validationを使用してリクエスト入力を検証しています。 しかし、他の種類の検証も必要です。たとえば、更新データを確認する必要がある場合、会社IDが存在しない場合は、カスタム例外をスローする必要があります。 この検証は、サービス層またはコントローラー層に配置する必要がありますか? サービス層: public Company update(Company entity) { if (entity.getId() == null || repository.findOne(entity.getId()) == null) { throw new ResourceNotFoundException("can not update un existence data with id : " + entity.getId()); } return repository.saveAndFlush(entity); } コントローラー層: public HttpEntity<CompanyResource> update(@Valid @RequestBody Company companyRequest) { Company company = …

2
Spring構成ファイルを配置する場所
プロジェクトのSpringフレームワークを特にサーバーサイドに統合したい。 そのため、warファイルのWEB-INFフォルダーに入れたくありません。 applicationContext.xmlを各レイヤーに配置する必要があります(個別のプロジェクトに分割されているため、各プロジェクトを意味しますか?(サービス、ドメイン、およびDAO) 良い習慣は何ですか?
18 java  soa  spring 

1
エンティティの代わりにDTOを使用するとどうなりますか?
私はRCPアプリケーションに取り組んでいます。このアプリケーションは初めてです。 Spring Beanは、エンティティを保存/取得するビジネスロジックを記述するために使用されます。 ただし、エンティティを直接クライアントに送信する代わりに、DTOに変換してクライアントにデータを入力しています。保存中に、再びDTOをエンティティに変換して保存します。 これらの変換の利点は何ですか?誰か説明できますか?
18 java  spring  entity  map  dto 

5
springまたはhibernateまたはその他のJava Webフレームワークを学習するには、サーブレットとJSPを知る必要がありますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 私は多くの人々にJava Web開発の学習を始める場所を尋ねてきましたが、コアJava(スレッド、ジェネリック、コレクション、(JDBC)の少しの経験)はすでに知っていますが、JSPとサーブレットは知りません。サーバーサイドにPHPを使用し、クライアントサイドにHTML、CSS、Javascript、HTML5を使用するいくつかのWebベースのアプリケーションで、開発の公平な配分を行いました。 私が尋ねたほとんどの人は、Hibernateにすぐに飛びつくように私に言ったが、一部の人は私がサーブレットとjspを学ぶ必要はなく、すぐにSpringフレームワークを勉強すべきだと言った。これは本当ですか?休止状態またはSpringを学習するためにサーブレットとJSPを学習する必要はありませんか? 彼らの答えはすべて私を混乱させ、今私は何を学ぶか勉強するかを完全に失います。JSPとサーブレットの学習をスキップした場合、将来役立つと思われる多くの重要な概念を見逃してしまうと思います。 だから、質問は、spring / hibernateまたは他のJava Webフレームワークを学ぶために、基礎と知識のサーブレットとJSPが必要ですか?

3
API Gateway(REST)+イベント駆動型マイクロサービス
API Gatewayパターンに従ってREST APIを介して機能を公開するマイクロサービスがたくさんあります。これらのマイクロサービスはSpring Bootアプリケーションなので、Spring AMQPを使用して、これらのマイクロサービス間でRPCスタイルの同期通信を実現しています。これまでのところ物事は順調に進んでいます。ただし、イベント駆動型のマイクロサービスアーキテクチャについて詳しく読んで、Spring Cloud Streamなどのプロジェクトを見ると、RPC同期アプローチで間違った方法で物事をしている可能性があると確信するようになります(特に、これをスケーリングする必要があるため)クライアントアプリケーションからの1秒あたり数百または数千のリクエストに応答するため)。 イベント駆動型アーキテクチャの背後にあるポイントを理解しています。私がよく理解していないのは、すべての要求に対する応答を期待するモデル(REST)の後ろに座っているときに、そのようなパターンを実際に使用する方法です。たとえば、APIゲートウェイをマイクロサービスとして使用し、ユーザーを保存および管理する別のマイクロサービスがあるGET /users/1場合、純粋にイベント駆動型のようにモデル化するにはどうすればよいですか?

1
Javaアプリケーション構造:水平分割と垂直分割
大きなJavaアプリケーションのプロジェクト構造(Maven / Eclipseを使用)の開始について少し議論します。 オプション1: entities (i.e. the whole database using Hibernate classes-first) services (i.e. sets of read/write operations on the entities) app (perhaps split up more further down the line) オプション2: area1-entities area1-services area1-app area2-entities area2-services area2-app ... (where area1, area2 etc. are functional areas of the system) オプション2を使用すると、明らかにMavenプロジェクト/モジュールが大幅に増え、データベースを生成するクラスが複数のプロジェクトに分散されます。誰もが各アプローチの長所/短所をアドバイスできますか?

3
複数のOauth2アクセストークン
oAuth2を使用するAPIと、このAPIをバックエンドとして使用する独自のモバイルアプリがあります。ユーザーは複数のデバイス(iPhone、iPad、Androidタブレット、Androidフォンなど)を介して同時にログオンできるため、各接続を区別するAPIが必要です。個別のアクセストークンを介してこれを実行したいです。各クライアントは個別のアクセストークンを取得します。 問題は、現在使用している実装(spring-security-oauth2)がclient_id、ユーザー名、スコープに基づいて一意のキーを生成することです。したがって、基本的に、アクセストークンを取得すると、すべてのクライアントは同じユーザーに対して同じアクセストークンを取得します。これは、DefaultAuthenticationKeyGeneratorを使用して行われます。 認証キージェネレーターを無視して、クライアントからのリクエストごとに新しいアクセストークンを作成するだけで安全ですか?
13 spring  oauth2 

4
Springを使用してBeanをインスタンス化しない場合
私はSpringの正しい使い方を理解しようとしています。構文的にではなく、その目的の観点から。Springを使用している場合、SpringコードはすべてのBeanインスタンス化コードを置き換える必要がありますか?Beanをインスタンス化するために、Springを使用する場合と使用しない場合 次のコードサンプルが私のジレンマを理解するのに役立つかもしれません: List<ClassA> caList = new ArrayList<ClassA>(); for (String name : nameList) { ClassA ca = new ClassA(); ca.setName(name); caList.add(ca); } Springを構成すると、次のようになります。 List<ClassA> caList = new ArrayList<ClassA>(); for (String name : nameList) { ClassA ca = (ClassA)SomeContext.getBean(BeanLookupConstants.CLASS_A); ca.setName(name); caList.add(ca); } 私は個人的にここでSpringを使用することは不必要なオーバーヘッドだと思います、なぜなら コードは読みやすく、理解しやすいです。 の複数の実装やさまざまな実装があることを期待していないため、Dependency Injectionにはあまり適していません。SpringのClassA設定を後から自由に置き換えたいと思います。 私は正しいと思っていますか?そうでない場合、どこで間違っていますか?
13 java  spring 

2
マイクロサービスアーキテクチャの共有ドメインモデル
マイクロサービスアーキテクチャを使用するSpring Bootアプリケーションがあると仮定しましょう。各サービスには独自のドメインモデルがありますが、各サービスはユーザードメインオブジェクトを参照する必要があります。この問題を解決する最善の方法は何でしょうか?各サービスが単にuserIdを持ち、必要に応じてユーザーの詳細をユーザーサービスに問い合わせる方が良いでしょうか、それともすべてのマイクロサービス用の共有ドメインライブラリを持つ方が良いでしょうか?

3
1つのトランザクションで2つのDAOメソッドを管理する方法は?
インタビューで誰かが私に尋ねました:単一のトランザクションで2つのトランザクション/ダオ方法をどのように管理しますか。必要な機能: それらのいずれかが失敗した場合、両方の方法をロールバックする必要があります。 両方のメソッドは、単一のトランザクションで個別に接続して呼び出すことができます。 管理は、サービス層ではなくDAO層で行う必要があります。 私は思う:質問は春のトランザクション管理に関連しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.