インタビューの春に尋ねられて、私たちはどのように答えるようにしています

今日は春は、あなたがどのように好意を得るために、インタビューでインタビュアーに答えるために必要がある場合はインタビュアーが尋ねたかについて話しています。私の心の中で、Springフレームワークは、世界で最も成功したJavaフレームワーク内であると言うことができる、および企業内の実用的​​なアプリケーションでは、エンタープライズ・アーキテクチャのほとんどは、Springフレームワークに基づいており、その成功は、代わりに彼の哲学から来ています技術、核となるアイデアは、ほとんどのIOCとAOPです。その後、我々はこの春、それについて何かを言います!

Springの歴史

Spirng 2004年から最初のバージョンは、これまでに十年以上していたときに、SunのEJB障害が発生したとき時代は、設定ファイルがええ、私は出て失わなかったことをEJB2が、非常に多くのだったので、春が来ますタイムズ紙は、開発ないコードを書くために、またはどのようにクールな私は彼が知らないかもしれないと思います。

そして、EJB3の顧客サービスの冗長構成の後に、しかし、JavaEEの開発、EJBコンテナの詳細致命的な依存性のために、EJBはかさばるEJBコンテナ、EJBコンテナでスマートに実行され、非常に多くの企業が感じます何のポリシーを確認していません。

それは春があるので、春には、それは、Beanの春IOCコンテナが提供対応、すべてのJavaクラスは、自主的なBeanがあり、資源で検討する春の上昇につながるため、EJBの衰退であります豆ベースのプログラミング。

質問が尋ねているインタビュー:春とは何ですか

答えは:春は、他のフレームワークに比べて、IOC軽量のための優れたサポートを提供するJ2EEフレームワークですが、また、AOP技術の非常に優れたパッケージを提供し、春のフレームワークよりモジュール、フレームのデザイン各モジュールは、特定のジョブ内に完了することができ、各モジュールは独立に動作することができない互いのフロント、Springフレームワークを使用する場合、したがって、我々は全体のフレームワークを使用することができ、フレームの一部を使用することもでき、例えば、AOPは、ログ管理モジュールを使用しました。

この質問に答える、私たちが何であるかを最終的に特別な春を暗唱する必要はありません、我々はSpringフレームワークの理解を表現したいことができ、多くの場合、インタビュアーはあなたを頼むかもしれないフレームワークの独自の理解ではなく、全体の章を暗唱。

インタビューQアクトII:春は何モジュール

下記に示します、

 

上記のいくつかのモジュールはインタビューの中で、私たちは、この7モジュールを終了し、いくつかの適切な説明をするために、春です。例えば:

  • SpringAOPは:アスペクト指向の考え方を使用して、管理対象オブジェクトのためのSpringフレームワークは、トランザクション管理をアプリケーションに統合することができるようAOPが、同僚は、このモジュールはまた、トランザクション管理を提供し、あなたが特定のEJBコンポーネントに依存することはできませんサポートしています。

  • SpringORM:そのようMyBatisのが好きにHibernate、JDO、など既存のORMフレームワークのサポートを、提供します。

  • SpringDAO:(データアクセスオブジェクト、DAO)モードとデータアクセスオブジェクト用のJDBCサポート、ビジネス・ロジックおよびデータベースアクセスの実装の分離を実装するコードを提供します。

  • SpringWeb:コンテキストコンテキストサーブレットリスナーとWebアプリケーションを提供するだけでなく、Strutsなどの既存のWebフレームワークの数を統合しています。

  • SpringContext:拡張コアコンテナ開発者に有用なサービスを提供する、Springコンテキストを提供します。

  • SpringWebMVC:WebアプリケーションMVCの実装のコンポーネントを提供します。

  • SpringCore:春のコアコンテナフレームワーク、彼はSpringフレームワークの基本機能を提供し、このモジュールは、最も重要なたBeanFactoryである、それはXMLファイルを読み込むことで、たBeanFactoryはIOCのアイデアを使用しながら、必要なオブジェクトを作成するためにファクトリパターンを使用していますオブジェクトをインスタンス化する方法。

上記の説明は、インタビューの中で唯一のいくつかの簡単な紹介です自分で理解することができ、私は面接はあなたが各モジュールを分析することができないかもしれない、この質問をした多くの場合、特に徹底しているあなたはそれを見たいすべてどのように深いの春の理解。

Q法IIIインタビュー:コア春は2のどちらですか?

春のコアコンテンツ:IOCとAOP。

インタビュープロセスの間に、仕上げコアの後、我々はIOCが何であるかを取る必要があり、AOPは明確であるかを説明し、あなたを検証するプロジェクトの例を与えます。今回は、インタビュアーは、春は非常に徹底されているため、あなたが適用されることを感じるかもしれません。

ポイント:IOCは何ですか?

コントロール(対照、IOCの逆数)の反転は、時には減少設計ターゲットとの間の結合関係、依存性注入と呼ばれます。一般的な、階層化アーキテクチャでは、コールが上下インターフェースは、最も直接的な依存性注入引き出し、AutoWired @、これにリソースアノテーション@

ユーバー下インターフェースは、上位層の下には、異なる下層に注入インスタンス化オブジェクトによって達成される選択するために、それはもはや上位層界面の下位層に依存しない実装依存、すなわち発信者が発信者に依存して、及びIOCを介してですこれは、コントロールの最初の反転です。

変更が発生した場合、呼び出し元と呼び出し先、当事者の一方と非常に強い結合の存在になることができ、オブジェクト間の相互作用に明示的な呼び出しによって実行される場合は、システムを高めることができ、スケーラビリティIOCメカニズムを使用して、システムは適切な変更を行います。

店は緑茶の販売がお茶を販売することを考えに、などの良いお茶の販売隣ではないことが判明した場合でも、私は、店頭販売お茶、初めは、所有者が唯一の緑茶、AbstractTea1 =新しいグリーンティ()と同等のものを販売する例を挙げてみましょう、その後、販売システムも、すべてが)(、)(AbstractTea1 =新しいグリーンティが登場AbstractTea1 =新しいBlackTeaに変更する必要がありました。

そして、このアプローチは、大幅な変更を行うためのプログラムが発生しますオブジェクトのインスタンスを作成する傾向があります。

マップの外観を描きます

我々はオブジェクトを使用する必要がある場合、描画方法によって、プロセスが完了するまでにTeaFactoryに託されたオブジェクトを作成することができ、我々は、getTea Factroyクラスメソッドの呼び出しを直接作成することができ置かTeaFactoryが達成され、特定の論理オブジェクト私達はちょうどBlackTeaを置き換えグリーンティする必要があり、その後、システムのすべてのAbstractTea1 =新しいグリーンティ()BlackTeaを交換し、唯一の非常に複雑なものを完了するために、一つの場所に変更を加える必要がありますこの方法。

が、システムのスケーラビリティを強化するために、工場出荷時のパターンを使用した後に言ったが、本質的には、工場出荷時のパターンはちょうどロジックプログラムは、すべてのファクトリクラスに配置変更され、クラスのシステムより多くの時間、多くの場合、それは工場出荷時のクラスにコードを変更します、我々は、実装後にIOCを使用し、別のがあるでしょう。

Spring容器将会根据配置文件来创建调用者对象,同时把被调用的实例化对象通过构造函数或者set()方法的形式注入到调用者对象中。

而我们回答面试官的问题的时候,同时需要把IOC的优点也要说出来。

IOC优点:

  1. 通过IOC容器,开发人员不需要关注对象是怎么去创建的,同时增加新的类也比较方便了。
  2. IOC容器可以通过配置文件来确定需要注入的实例化对象,因此很方便进行单元测试。

要点二:什么是AOP?

面向切面编程(Aspect Oriented Programming)是面向对象开发的一种补充,他允许开发人员在不改变原来模型的基础上动态的去修改模型用来满足新的需求,例如,开发人员可以在不更改原来业务逻辑模型的基础上动态的增加日志,安全或者异常处理的功能。

AOP的基本概念

  1. Aspect(切面):通常是一个类,里面可以定义切入点和通知

  2. JointPoint(连接点):程序执行过程中明确的点,一般是方法的调用

  3. Advice(通知):AOP在特定的切入点上执行的增强处理,有before,after,afterReturning,afterThrowing,around

  4. Pointcut(切入点):就是带有通知的连接点,在程序中主要体现为书写切入点表达式

  5. AOP代理:AOP框架创建的对象,代理就是目标对象的加强。Spring中的AOP代理可以使JDK动态代理,也可以是CGLIB代理,前者基于接口,后者基于子类

上面这些内容其实很多时候在面试的时候不用说的这么清楚,因为我们在面试的过程中,并不一定能够记得这么清楚,到时候需要我们表述一个大概的内容即可。

实现代理的两种代理方式:

  • 静态代理(个人理解)

针对具体的类编写代理类。 针对一个接口编写一个代理类。

  • 动态代理

而动态代理也可以分为2种,一种是JDK Proxy,另外一种是cglib代理。Spring对于有接口的类使用JDK Proxy,对于无接口和抽象类用Cglib代理,虽然Cglib可以进行代理,但是Cglib代理是有例外,就是代理类中不能出现final修饰的类或者类中有final修饰的方法。

如果以上的内容你在面试的过程中,大致上都说出来了,那么对于面试Spring这一块,可能几率从百分之50上升到百分之八十了。

也祝大家在未来的面试过程中,一直稳如泰山!

写在最后

  • 第一:看完点赞,感谢您的认可;
  • ...
  • 第二:随手转发,分享知识,让更多人学习到;
  • ...
  • 第三:记得点关注,每天更新的!!!
  • ...

おすすめ

転載: www.cnblogs.com/Java-no-1/p/11116733.html