私はSpring MVCで長い経験がありますが、最近はWicketに興味を持っています。Spring MVCまたはWicket?
私の質問は、(Wicketで)DI、Transaction Mgmt、JDBC接続などのすべてのものを処理する方法もありますか? Springsourceスイートの特定の部分をWicketと混在させることはできますか? Wicket & Weld? Wicket & Guice?
私はSpring MVCで長い経験がありますが、最近はWicketに興味を持っています。Spring MVCまたはWicket?
私の質問は、(Wicketで)DI、Transaction Mgmt、JDBC接続などのすべてのものを処理する方法もありますか? Springsourceスイートの特定の部分をWicketと混在させることはできますか? Wicket & Weld? Wicket & Guice?
WicketはSpring MVCを効果的に置き換えますが、Springコンテナ自体は効果的に置き換えません。 Wicketは、Spring Bean(サービス、DAOなど)を直接ページに挿入できるように、@SpringBean
注釈によってSpringと簡単に統合されます。 DIを他の方法で実行することはできません - 正当な理由があります。
SpringとWicketを併用することは賢明です。しかし、私が覚えている限り、WicketのページとコンポーネントはSpringコンテナによって管理されていないので、@Transactional
アノテーションを使用することはできません(とにかく、トランザクションは深いレベルに属します)。他
すべてがまったく同じ作品 - などAOP、JDBC、
実際には、AspectJ + '@ Configurable'を使用する場合、Wicketコンポーネントのメソッドで' @ Transactional'を使用することができます。しかし、私はそれを使用することをお勧めしたいかどうかは分かりません。 – tetsuo
Wicketのは、プレゼンテーション層のフレームワークです。 DI、トランザクション、または接続を処理しません。
しかし、それは容易春、Guiceの(公式自動改札モジュール、wicket-spring及びwicket-guice)及びCDI /溶接(wicket-cdi、Igor Vaynbergからサイドプロジェクト、自動改札のコミッターの1つ)を含むフレームワークの数、と統合することができます。以下は
Wicket Wiki: Integration guides
、春とシンプルなWicketのアプリケーション。トランザクションのビットは単純な古いSpringの設定なので、私はそれらを含めて気にしませんでした。
HelloWorldService.java
public class HelloWorldService {
private String message;
public void setMessage(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
}
applicationContext.xmlを
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
<bean id="helloWorldService" class="minimal.wicketspring.HelloWorldService">
<property name="message" value="Hello, World!" />
</bean>
</beans>
WicketApplication.java
public class WicketApplication extends WebApplication {
@Override
public void init() {
super.init();
getComponentInstantiationListeners().add(new SpringComponentInjector(this));
}
@Override
public Class<HomePage> getHomePage() {
return HomePage.class;
}
}
HomePage.java
public class HomePage extends WebPage {
@SpringBean
private HelloWorldService helloWorldService;
public HomePage() {
add(new FeedbackPanel("feedback"));
add(new Link<Void>("link") {
@Override
public void onClick() {
info(helloWorldService.getMessage());
}
});
}
}
HomePage.html
<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
<body>
<div wicket:id="feedback"></div>
<a wicket:id="link">Show Message</a>
</body>
</html>
web.xmlの
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>wicket.wicket-spring</filter-name>
<filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
<init-param>
<param-name>applicationClassName</param-name>
<param-value>minimal.wicketspring.WicketApplication</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>wicket.wicket-spring</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
私は完全に春を残すとJava EE 6を試みることをお勧めします+ Wicket 6.x.私はSpring MVCを使用していましたが、Java EE 5の時代にはSpring + Wicketでしたが、Java EE 6はミドルウェア層としてSpringソリューションに勝っています。
アップデート2017: Javaの7の新グッズで と8(ラムダ、メソッドのrefereces、デフォルトのインターフェイスメソッドの実装、...)、JavaのEE 7 + Wicket 8コンボは、より魅力的です。 Spring MVCはかなり普及しており、学習曲線が改善されているかもしれませんが、Wicketを試してみると、「次のクールなもの」(私の場合はAngular2)になると見逃してしまいます。
注:私はRed Hatから支払われますが、上記は私の正直な意見です。 2011年、私はあなたに春と一緒に行くように言います。
ちょうどwicketsを忘れてしまった。シンプルな春のMVC、Twitterのブートストラップレイアウト、バネのポートフォリオ全体で、最高レベルのセキュリティを備えたスケーラブルで最高の高性能アプリケーションを作成できます。 Wicketsはあなたの最初の印象に遅れて実際の開発を始めるとすぐに痛みです。
http://www.slideshare.net/mraible/comparing-jvm-web-frameworks-february-2014私はこのプレゼンテーションが本当に役に立ちました。
私はあなたのものをテストする機能を追加するべきです(私はSpringJUnit4ClassRunnerがスプリングコントローラをテストするのに非常に便利だとわかります)。 – user1241320
Wicketにはテストのための基本的なサポートがあります。単体テストでUIページ(またはその一部)をテストするのは簡単です。あなたがAjax関数をテストしたくない限り、 – bert
Ajaxの動作はWicketTesterの対象となります。プレーンJavaScriptのテストはWicketのビジネスの一部ではありません。 –