9

私はSpringFrameworkを初めて使用します。春の基本的な理解を教えてください。私はJavaとJSFを知っていますが、Strutsやその他のフレームワークについては何も知りません。インターネットを検索してPDFをダウンロードできましたが、JSFフローのようにSpringフローがわかりません。Springの流れを簡単に理解するためのリンクを教えてください。

4

3 に答える 3

9
  • 移行1-ユーザーは、フォームを送信するか、ハイパーリンクをクリックするなどして、サーバーにリクエストを送信します。リクエストは最初にWEB.XMLに送信されます。
  • 遷移2– WEB.XMLは、タグを確認することにより、要求をDispatcherServletにルーティングします。
  • 移行3– DispatcherServlet内で、最初の「HandlerMapping」が適切な「Controller」にリクエストを渡しました。
  • 移行4–コントローラーはリクエストを適切なモデルクラスにマップします。すべてのBUSINESSLOGICは、Modelクラス内で実行されます。
  • 移行5–データベース操作が必要な場合、モデルクラスはリクエストを適切なDAOにルーティングします。すべてのデータベース操作はDAOで実行する必要があります。
  • Transition6 –必要に応じて、属性をリクエスト/セッション/アプリケーションスコープにアタッチし、モデルに戻ります。
  • 移行7–必要に応じて、属性をリクエスト/セッション/アプリケーションスコープにアタッチし、コントローラーに戻ります。
  • 遷移8–コントローラーはそれを任意のビュー(JSP / HTMLなど)に返すだけです。
  • 移行9– JSP/Htmlがユーザーに表示されます。

Spring MVCアプリケーションフロー:

于 2014-04-23T09:43:20.993 に答える
3

私もSpringFrameworkを初めて使用します。これまでのところ、以下のドキュメントが最も基本的なものです。私も読んでいます。お役に立てば幸いです。

SpringFrameworkの紹介

于 2012-07-06T09:37:30.087 に答える
2

私もSpringに不慣れで、昔も同じような質問がありました。まず最初に、CraigWallsによる「SpringinAction」の本をお勧めしたいと思います。これは非常に便利で理解しやすいものであり、 http: //www.tutorialspoint.com/spring/も多くのことを理解するのに役立ちました。あなたの質問を正しく理解していれば、「Springのフロー」をSpringIoCコンテナとSpringBeanのライフサイクルに分けることができます。これは、春の豆のライフサイクルの例を含む非常に小さな概要です。Beanは、Springコンテナでの作成と破棄の間にいくつかのステップを経ます。これらの手順は次のとおりです。

  1. インスタンス化
  2. プロパティを入力します
  3. BeanNameAwareのsetBeanName()
  4. BeanFactoryAwareのsetBeanFactory
  5. ApplicationContextAwareのsetApplicationContext()
  6. 初期化前のBeanPostProcessors
  7. InitializingBeanのafterPropertiesSet()
  8. カスタムinitメソッドを呼び出す
  9. 初期化後のBeanPostProcessors
  10. DisponsableBeanの破棄
  11. カスタムdestroy-methodを呼び出す

各ステップは、カスタマイズのための独自の機会を提供します。Beanの寿命を単純に「追跡」するコードを次に示します。

Bean ClassAの場合:

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);
    }

}

CustomPostProcessorの場合:

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を取得して、メッセージを出力します。

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();
    }

app-context.xmlには、次のものがあります。

<bean id="classA" class="ClassA" init-method="customInitMethod"
        destroy-method="customDestroyMethod">
    <property name="messageA" value="messagA: Hello Spring!" />
</bean>

<bean class="CustomPostProcessor" />

私が理解しているように、出力ラインは次のようにライフサイクルステージに対応しています。

  • 1.インスタンス化

ClassA:デフォルトのコンストラクターが呼び出されます。

  • 2.人口のプロパティ

ClassA:呼び出されたメッセージセットメソッド。

  • 3.BeanNameAwareのsetBeanName()

ClassA:Bean名セット:classA

  • 4.BeanFactoryAwareのsetBeanFactory

ClassA:beanFacroryセット。

  • 5.ApplicationContextAwareのsetApplicationContext()

ClassA:アプリケーションコンテキストセット:

  • 6.初期化前のBeanPostProcessors

CustomPostProcessor:beforeInitialization on:classA

  • 7.InitializingBeanのafterPropertiesSet()

ClassA:InitializingBeanインターフェイスのためにafterPropertiesSet()が呼び出されました。

  • 8.カスタムinit-methodを呼び出す

ClassA:customInitMethod()メソッドが呼び出されました。

  • 9.初期化後のBeanPostProcessors

CustomPostProcessor:afterInitialization on:classA

  • プログラムはメッセージを出力します

ClassA:メッセージgetメソッドが呼び出されました。messagA:こんにちは春!

  • 10.DisponsableBeanの破棄

ClassA:DisposableBeanインターフェイスのためにdestroy()が呼び出されました。

  • 11.カスタムdestroy-methodを呼び出す

ClassA:customDestroyMethod()メソッドが呼び出されました。

于 2013-02-15T21:59:54.387 に答える