私はSpring Frameworkの初心者です。春の基本的な理解について私を案内してください。私はJavaとJSFを知っていますが、私はStrutsや他のフレームワークについては何も知らないのです。私はインターネットを検索してPDFをダウンロードできましたが、私はJSFの流れを理解しているようにSpringの流れを理解していません。 Springの流れを理解するための簡単な方法のリンクを私に提供してください。基本的なSpringフレームワークとトータルフローの理解
答えて
私はSpring Frameworkも新しくなっています。 これまでに、以下の文書が最も基本的なものです。私もそれを読んで、それがあなたを助けることを願っています。
私も春に新しいですし、時間前に同様の質問がありました。まず第一に私はCraig Wallsの「Spring in Action」の本をお薦めしたいと思います。私はそれが非常に有用で理解しやすいと感じました。また、 http://www.tutorialspoint.com/spring/は多くのことを理解する助けになりました。私があなたの質問を正しく理解すれば、 "Springの流れ"をSpringのIoCコンテナとSpring Beanのライフサイクルに分けることができます。ここでは、Spring Beanのライフサイクルでexapmleを使用した非常に小さな概要を示します。 Beanは、Springの コンテナで、作成と破棄の間のいくつかのステップを実行します。
- インスタンス化 移入特性
- BeanNameAware`s setBeanName()
- BeanFactoryAware`s setBeanFactory
- ApplicationContextAware`s setApplicationContext()
- プレ初期化BeanPostProcessors :これらの手順であります
- InitializingBeanのafterPropertiesSet()
- コールカスタムのinitメソッド
- 後の初期化BeanPostProcessors
- DisponsableBean`sが
- コールカスタム破壊法を
を破壊する各ステップは、カスタマイズのための独自のoportunitiesを提供します。
豆にClassAの場合:CustomPostProcessorについては
public class ClassA implements InitializingBean, DisposableBean, BeanNameAware, BeanFactoryAware, ApplicationContextAware{
private String messageA;
public ClassA() {
System.out.println("ClassA: default constructor called.");
}
public void customInitMethod(){
System.out.println("ClassA: customInitMethod() method called.");
}
public void customDestroyMethod(){
System.out.println("ClassA: customDestroyMethod() method called.");
}
public String getMessageA() {
System.out.println("ClassA: message get method called.");
return messageA;
}
public void setMessageA(String message) {
System.out.println("ClassA: message set method called.");
this.messageA = message;
}
public void afterPropertiesSet() throws Exception {
System.out.println("ClassA: afterPropertiesSet() called because InitializingBean interface.");
}
public void destroy() throws Exception {
System.out.println("ClassA: destroy() called because DisposableBean interface.");
}
public void setApplicationContext(ApplicationContext arg0)
throws BeansException {
System.out.println("ClassA: application context set: " + arg0.getApplicationName());
}
public void setBeanFactory(BeanFactory arg0) throws BeansException {
System.out.println("ClassA: beanFacrory set.");
}
public void setBeanName(String arg0) {
System.out.println("ClassA: bean name set: " + arg0);
}
}public class ClassA implements InitializingBean, DisposableBean, BeanNameAware, BeanFactoryAware, ApplicationContextAware{
private String messageA;
public ClassA() {
System.out.println("ClassA: default constructor called.");
}
public void customInitMethod(){
System.out.println("ClassA: customInitMethod() method called.");
}
public void customDestroyMethod(){
System.out.println("ClassA: customDestroyMethod() method called.");
}
public String getMessageA() {
System.out.println("ClassA: message get method called.");
return messageA;
}
public void setMessageA(String message) {
System.out.println("ClassA: message set method called.");
this.messageA = message;
}
public void afterPropertiesSet() throws Exception {
System.out.println("ClassA: afterPropertiesSet() called because InitializingBean interface.");
}
public void destroy() throws Exception {
System.out.println("ClassA: destroy() called because DisposableBean interface.");
}
public void setApplicationContext(ApplicationContext arg0)
throws BeansException {
System.out.println("ClassA: application context set: " + arg0.getApplicationName());
}
public void setBeanFactory(BeanFactory arg0) throws BeansException {
System.out.println("ClassA: beanFacrory set.");
}
public void setBeanName(String arg0) {
System.out.println("ClassA: bean name set: " + arg0);
}
}
:メインクラスで
public class CustomPostProcessor implements BeanPostProcessor {
public Object postProcessBeforeInitialization(Object bean, String beanName)
throws BeansException {
System.out.println("CustomPostProcessor: beforeInitialization on: "
+ beanName);
return bean;
}
public Object postProcessAfterInitialization(Object bean, String beanName)
throws BeansException {
System.out.println("CustomPostProcessor: afterInitialization on: "
+ beanName);
return bean;
}
}
我々はApplicationContextの作成、豆や印刷を取得ここで生活bean`s単に「痕跡」は、いくつかのコードがありますメッセージアウト:
public static void main(String[] args) {
AbstractApplicationContext context = new ClassPathXmlApplicationContext(
"META_INF/spring/app-context.xml");
ClassA objA = (ClassA) context.getBean("classA");
System.out.println(objA.getMessageA());
context.registerShutdownHook();
}
アプリコンテキストファイルでは、
<bean id="classA" class="ClassA" init-method="customInitMethod"
destroy-method="customDestroyMethod">
<property name="messageA" value="messagA: Hello Spring!" />
</bean>
<bean class="CustomPostProcessor" />
私は出力ラインを理解したように、ライフサイクルステージにこのように対応しています
- 1.Instantiate
にClassA:デフォルトコンストラクタが呼ばれます。
- 2.Populate特性
A級:と呼ばれるメッセージを設定方法。 3.BeanNameAware`s setBeanName()
ClassAクラス:Bean名セット:クラスA
- 4.BeanFactoryAware`s setBeanFactory
A級:beanFacroryセット。
- 5.ApplicationContextAware`s setApplicationContext()
A級:アプリケーション・コンテキストのセット:
- 6.Pre初期化BeanPostProcessors
CustomPostProcessor:beforeInitializationで:クラスA
- 7.InitializingBean`s afterPropertiesSet()
A級:afterPropertiesSet()InitializingBeanインタフェースため呼ばれます。
- 8.Callカスタムのinitメソッド
にClassA:customInitMethod()メソッドが呼び出されます。
- 9.Post初期化BeanPostProcessors
CustomPostProcessor:afterInitialization上:メソッドが呼び出されますメッセージ:クラスA
- プログラムは、メッセージ
にClassAを印刷します。 messagA:こんにちは春!
- 10.DisponsableBean`s
A級破壊:破壊()DisposableBeanインタフェースため呼ばれるが。
- 11.Callカスタム破壊法
にClassA:customDestroyMethod()メソッドが呼び出されます。
- 変遷1 - ユーザーが最初にweb.xmlに与えられているハイパーリンクなどの要求をクリック で/フォームを提出することによって、サーバーにリクエストを送信します。
- 遷移2 - WEB.XMLは、タグで を見てDispatcherServletに要求をルーティングします。
- 遷移3 - DispatcherServletの内部 最初の 'HandlerMapping'要求が適切な 'Controller'に渡されます。
- 移行4 - コントローラは、要求を適切なModelクラスにマップします。すべて BUSINESS LOGICはModelクラス内で実行されます。
- 移行5 - データベース 操作が必要な場合、モデルクラスは要求を適切な DAOにルーティングします。すべてのデータベース操作はDAOで実行する必要があります。
- Transition6 - 必要に応じて、属性をrequest/session/application スコープに追加し、Modelに戻ります。
- 移行7 - 必要に応じて、 属性を要求/セッション/アプリケーションスコープに割り当て、 コントローラに戻ります。
- 移行8 - コントローラは、それを任意のビュー (JSP/HTMLなど)に戻すだけです。
- 移行9 - JSP/Htmlはユーザーに表示されます。
- 1. ワカンダ - 基本的な理解
- 2. CSS要素の基本的な理解
- 3. 基本的なDOMチェーニングの理解
- 4. Adaboostアルゴリズムの基本的な理解
- 5. Erlang - 基本的なエラーコードの理解
- 6. 基本的な内部結合 - 理解
- 7. ウォルマート電極基本的な理解
- 8. モバイルクライアントとのサーバインタラクションの基本的な理解 - Node.JS、Express、BAAS
- 9. Amazon AWSと製品広告APIの基本的な理解
- 10. Boost :: Spirit:基本的な論理と表現の構文解析
- 11. Spring MVC - 基本的なリクエストマッピングの質問
- 12. 基本的なSpring 3.1 LDAPの例
- 13. iOSフレームワークとXcode(とSwift)の基本的な力学
- 14. SQLike - 基本の理解
- 15. ハスケルでの基本的な再帰の理解
- 16. Sparkの基本的なメソッド呼び出しの理解
- 17. ルートの基本的なPATHを理解できません
- 18. Androidソースコードリポジトリの基本的な命名方式を理解する
- 19. jQueryの基本的なJSON解析
- 20. の基本的なXML解析
- 21. 基本的なファイル構造の誤解
- 22. 基本的なgitフックを理解する
- 23. jQuery(基本的な質問)を理解する
- 24. 基本的なヘルプ - ユーザーの管理
- 25. スウィフトクラス基本的なD.R.Yの原理
- 26. 基本的なスライダのイベント処理
- 27. Pythonの基本的なエラー処理
- 28. .netソケット基本的な解説
- 29. 基本的なキュー管理システム
- 30. 基本的な画像処理
私は実際にそれが良かったの開始が、起こって、その文書を持っているおかげで、私はので、私は求めています感じたいくつかのlacknessがあり、我々はそれを我々が理解できる3回行くこともあれば、私は思いますスー、とにかくありがとう。 – user1407297
こんにちは、もう一度私です。私がIoCやAOPのような用語で完全に混乱した時、私はこのサイトを見つけました。それは本当に基本的で明確です.http://www.springbyexample.org – POPOL