このチュートリアルでは、WicketをSpringフレームワーク** に統合する方法について説明します。

この記事のライブラリ:

  1. ウィケットv1.4.17

  2. 改札 – v1.4.17

  3. Spring v3.0.5.RELEASE

1.プロジェクトの構成

このチュートリアルの最終的なプロジェクトディレクトリ構造です。何も特別なものではなく、標準的なMavenプロジェクトです。


wicketスプリングの例、title = "wicket-spring-example"、width = 442、height = 412

プロジェクトの依存関係

WicketとSpringの依存関係を取得し、両方を統合するには、 ”

wicket-spring.jar

“が必要です。

<project ..>

    <dependencies>

        <!-- Wicket framework-->
        <dependency>
            <groupId>org.apache.wicket</groupId>
            <artifactId>wicket</artifactId>
            <version>1.4.17</version>
        </dependency>

        <!-- Integrate Wicket with Spring -->
        <dependency>
            <groupId>org.apache.wicket</groupId>
            <artifactId>wicket-spring</artifactId>
            <version>1.4.17</version>
        </dependency>

        <!-- Spring framework -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>3.0.5.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>3.0.5.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>3.0.5.RELEASE</version>
        </dependency>

        <!-- slf4j-log4j -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.5.6</version>
        </dependency>

    </dependencies>

</project>

3.春の豆

Spring Beanを作成し、

@ Service

で注釈を付けます。

package com.mkyong.user;

public interface HelloService {

    String getHelloWorldMsg();

}

package com.mkyong.user;

import org.springframework.stereotype.Service;

@Service
public class HelloServiceImpl implements HelloService {

    public String getHelloWorldMsg() {
        return "Spring : hello world";
    }

}

4.スプリングコンテナに注入する

標準のSpring

applicationContext.xml

ファイルを作成し、自動コンポーネントスキャン機能を有効にします。


File:applicationContext.xml

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <context:component-scan base-package="com.mkyong.user"/>

</beans>

5. WicketとSpringの統合

このaddComponentInstantiationListener(新しいSpringComponentInjector(this)); `”を使ってWicketアプリケーション

init()

メソッドをオーバーライドします。


File:Wicketアプリケーションクラス

package com.mkyong;

import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.spring.injection.annot.SpringComponentInjector;
import com.mkyong.user.SimplePage;

public class WicketApplication extends WebApplication {

    @Override
    public Class<SimplePage> getHomePage() {

        return SimplePage.class;//return default page
    }

    @Override
    protected void init() {

        super.init();
        addComponentInstantiationListener(new SpringComponentInjector(this));

    }

}

これで、

@ SpringBean

を介してWicketコンポーネントにSpring Beanを挿入することができます。

package com.mkyong.user;

import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.spring.injection.annot.SpringBean;

public class SimplePage extends WebPage {

    @SpringBean
    private HelloService helloService;

    public SimplePage(final PageParameters parameters) {

        add(new Label("msg", helloService.getHelloWorldMsg()));

    }

}

<html>
<body>
    <h1>Wicket + Spring integration example</h1>

    <h2 wicket:id="msg"></h2>

</body>
</html>

6. web.xml

最後に、WebプロジェクトでWicketとSpringが何であるかを確認します。

`web.xml`で両方を宣言します。


File:web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app__2__4.xsd"
    version="2.4">
    <display-name>Wicket Web Application</display-name>

    <filter>
        <filter-name>wicket.wicketTest</filter-name>
        <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
        <init-param>
            <param-name>applicationClassName</param-name>
            <param-value>com.mkyong.WicketApplication</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>wicket.wicketTest</filter-name>
        <url-pattern>/** </url-pattern>
    </filter-mapping>

    <listener>
        <listener-class>
                     org.springframework.web.context.ContextLoaderListener
                </listener-class>
    </listener>

</web-app>

7.デモ

単純なWicketページ。メッセージはSpringから返されます。


wicket spring demo、title = "wicket-spring-example-demo"、width = 579、height = 306

ダウンロードする –

Wicket-Spring-Integration-Example.zip

(8KB)

参考文献


  1. https://cwiki.apache.org/WICKET/spring.html

    [ウィケットスプリングの詳細

Mavenの詳細]。リンク://spring/spring-auto-scanning-components/[Spring自動コンポーネント

走査]