1、春のはじめに
初期のJ2EEの時代では、非常に退屈なアプリケーションを開発し、彼らは私たちは多くの時間を費やす必要があるので、Webサービスを提供し、そのような他のデータベースへのアクセスなどのオブジェクトを作成し、管理するために話すことはありません。このJ2EEフレームワークは、非効率的な現状を肥大化した上で、その時点でのオーストラリアという名前のロッド・ジョンソンは、リードを奪った様々な疑問、によって定めロッド書き込みブック・ジョンソン「1つのJ2EEの設計と開発に関する専門家1」、後コンセプトと試作品の一部は、春のフレームワークを作成しました。(PS:ロッド・ジョンソンは、実際に音楽の医師である???)
春のフレームワークは、主にエンタープライズアプリケーション開発と創造の複雑さに対処するために、軽量なオープンソースのJavaフレームワークです。そのコアは、私たちは、オブジェクトとその依存関係を管理するためですが、また、一般的なロギング、パフォーマンス統計、セキュリティ制御、例外処理アスペクト指向の機能として提供するだけでなく、そのようなデータベースアクセスフレームワークのHibernateなどのサードパーティのフレームワーク、多数を統合し、 MyBatisのは、WebサービスフレームワークStrutsは、その上のタスクスケジューリング、Redisのキャッシュ、MQおよびだけでなく、自分自身のSpringMVCを提供しています。
春Frameworkはまた、J2EEアプリケーション層のためのソリューションに取り組んでプレゼンテーション層では、ビジネス層と永続化層に対応する機能をフレームワークに統合され、そのエンタープライズアプリケーション開発春「ワンストップ」ソリューション言うことができます。
しかし、実際には反対はJ2EEと春ではない、春には、それぞれのJ2EE仕様を統合するJ2EEのサプリメントは、次のとおりです。
- サーブレットAPI(JSR 340)
- WebSocket API(JSR 356)
- 同時ユーティリティ[(JSR 236によって)
- バインディングJSONのAPI(JSR 367)
- ビーン検証(JSR 303)
- PSD(JSR 338)
- JMS(JSR 914)
- 依存性注入(JSR 330によって)
- 一般的なコメント(JSR 250)
春は彼らの生態系の漸進的な実現に、石の丘を「借り」と言うことができます。
2、春のフレームワークの進化
2002年10月にリリースさ春の最初のバージョンは、10年持つよう春コミュニティサポートFrameworkなどのコア機能のすべての側面が急速に発展している、各マイルストーンリリースがもたらす春の重要な機能をリコールする必要があります。
- 春0.9:これは、への最初のパブリックリリースのためのフレームワークである「オンワンワンエキスパート:J2EEの設計と開発」の本に基づいて、Bean構成、AOPのサポート、JDBC抽象化フレームワーク、抽象トランザクションをサポートするための基礎を提供しますように。このバージョンは、公式参照文書を持っていませんが、ソースコードやSourceForgeで利用できるドキュメントを見つけることができます。
- 春の1.x:これが公開され、公式参照文書の最初のバージョンです。これは、7つのモジュールから構成されています。
- 春のコア、Springコンテキスト、春のDAO、春ORM、春AOP、春のWeb、春のWeb MVC
- 春2.xでは:このバージョンでは、春のWebへの途中、春のWeb MVCへの6つのモジュール、Springコンテキスト春のコアモジュールで構成されています。
- @AspectJのアノテーションサポートAOP開発。
- 非同期JMSメッセージドリブンPOJOのフルサポート。
- タスクのスケジューリングはのTaskExecutorの抽象を導入しました。
- 必要と@AspectJ @特にトランザクション@のJava 5のアノテーションのサポート、、。
- 春2.5.X:このバージョンでは、次の機能が含まれています。
- JSR-250のアノテーションのための新しい@Autowiredコメントとサポート(リソース@ PostConstructと@PreDestroy @)の。
- 新規登録ビーン関連のノート:@Component、リポジトリ@、サービスと@Controller @。
- Spring MVCの@Controllerノートに加えて、また、アノテーションによってリクエスト処理の設定をサポートするために、@ RequestMapping、@ RequestParamと@ModelAttributeノートを追加しました。
- 春3.0.xの:これは、Javaの春5の最初のバージョンに基づいており、Java5は、ジェネリック、可変パラメータとしての機能を利用するために設計されています。
- Java5のサポートは、このようなジェネリック、可変パラメータを備えています。
- RESTのフルサポート。
- 新しいMVCのXML名前空間と、そのような中@CookieValueや@RequessHeaders SpringMVCなど他の注釈、。
- 機能強化およびJSR-303(ビーンバリデーション)のサポートを確認してください。
- 春3.2.xの:このバージョンでは、次の機能が含まれています。
- 非同期サーブレット3.0に基づいてサポート要求処理。
- 新しいSpringMVCコメント@ControllerAdvice。
- 春の4.x:これは春の重要なリリースである、また、完全にJavaの8をサポートする最初のバージョンです。あなたはまだ古いバージョンが、非推奨クラスとメソッドを使用することもできますが、削除されました。
- HibernateはORM 5.0のフルサポート。
- JMSとWebの改善。
- 改善のWebSocketメッセージ。
- 基礎となるオブジェクトの春のエージェントへのアクセスを可能にするAopTestUtilsユーティリティクラスを導入しました。
- 春の5.x:これはメジャーリリースで、全体のフレームワークは、Java 8に基づいています。
- パフォーマンスの大幅な改善が得られ、Javaの8のパワーをフルに活用してください。
- サポートJMS2.0 +およびJPA 2.1以上。
- 反応式に基づいて構築されたSpringMVCを交換するためのプロジェクトです春のWebフラックスを、導入され、それは完全に非同期および非ブロックです。
- Webおよびコアモジュールは、反応性のプログラミング・モデルに適しています。
3、春の全体的なアーキテクチャ
春に5.0倍、約モジュール20は、図示のように:
これらのモジュールは、次のセクションにまとめられています。
コアコンテナ
コアコンテナ(コア容器)4つのモジュールコア、豆、コンテキストおよび表現言語を含みます。
- コア金型は、主にコアスプリングフレームワークを含む必要があり、他の構成要素の基本的なコアです。動的プロキシ関連ASM、CGLIB、及び様々なUtilsの、のStringUtils、CollectionUtils。
- 豆モジュールは、アクセスプロファイルを含む、のIoC / DIならびにクラスに関連付けられたすべての操作をBeanを作成して管理します。以下のような:たBeanFactory、BeanDefinitionsなど。
- コンテキストモジュールは豆の特性を継承コア豆モジュールに基づいて、上に構築され、スプリングは、コアの拡張の数を提供します。ApplicationContextのインタフェースコンテキストは、コアモジュールです。
- 式言語のモジュールは、強力な式言語を提供します。EL式は、JSP古代に使用されています。
データアクセス/統合
JDBC、ORM、OXM、JMSおよびトランザクションモジュールを備えたデータアクセス/統合。
- JDBCモジュールは、すべてのデータベース・ベンダーを適応させるために使用されるJDBC抽象化レイヤを提供します。このモジュールは、JDBCパッケージのすべてのクラスのSpringのデータ・アクセスが含まれています。
- ORM 模块提供了几种常用的对象关系映射框架,如 JPA 、Hibernate 、iBatis 。
- OXM 模块提供了一个对ObjecνXML 映射实现的抽象层。
- JMS (Java Messaging Service)模块主要包含一些生产和消费消息的特性。
- Transaction 模块支持编程和声明性的事务管理。
Web
Web 层包含了Web 、Servlet 、WebSocket、Porlet 模块。
- Web 模块:提供了基础的面向Web 的集成特性。例如,多文件上传。
- Servlet 模块:该模块包含Spring 的model-view-controller (MVC)实现。
- WebSocket 模块:提供 WebSocket 协议支持。
- Porlet 模块:提供了用于 Portlet 环境和 Servlet 模块的 MVC 的实现
AOP
AOP 模块提供了一个符合 AOP 联盟标准的面向切面编程实现,它让你可以定义例如方法拦截器和切点,从而将逻辑代码分开,降低它们之间的耦合性。
- Aspects 模块提供了对AspectJ 的集成支持。
- Instrumentation 模块提供了class instrumentation 支持和classloader 实现,使得可以在特定的应用服务器上使用。
- Messaging 模块:对消息通信集成提供了广泛的支持,及提供简化 JMS API 的使用到异步接收消息的完整基础结构。
Test
Test 模块支持使用 JUnit 和TestNG 对 Spring 组件进行测试。
最后
Spring 背景及架构就介绍到这,接下来将对 Spring 核心容器、AOP、事务这三部分内容展开一系列的讨论。
注:该系列文章使用的 Spring 版本是 5.0+。
以上就是本章内容,如果文章中有错误或者需要补充的请及时提出,本人感激不尽。
参考:
「春のソース深度分析(第2版)」
「Spring5高度なプログラミング」
「SpringBootプログラミングのアイデア」
https://baike.baidu.com/item/spring/85061#2
https://docs.spring.io/spring/ドキュメント/ 5.2.2.RELEASE /春-framework-参照/ overview.htmlに#概要