我對Spring MVC有很長的(並且很高興)的經驗,但最近我對Wicket感興趣。Spring MVC或Wicket?
我的問題也是關於如何處理(使用Wicket)DI,事務管理,JDBC連接和所有這些東西?將Springsource套件的某些部分與Wicket混合可以嗎? Wicket & Weld? Wicket & Guice?
我對Spring MVC有很長的(並且很高興)的經驗,但最近我對Wicket感興趣。Spring MVC或Wicket?
我的問題也是關於如何處理(使用Wicket)DI,事務管理,JDBC連接和所有這些東西?將Springsource套件的某些部分與Wicket混合可以嗎? Wicket & Weld? Wicket & Guice?
Wicket有效地替代Spring MVC,但不是Spring容器本身。 Wicket可以通過@SpringBean
註釋輕鬆地與Spring進行集成,這允許您直接向頁面注入Spring bean(服務,DAO等)。您不能以其他方式執行DI - 這是有原因的。
這是一個明智的選擇,一起使用Spring和Wicket。然而,據我記得,Wicket頁面和組件不是由Spring容器管理的,所以你不能使用@Transactional
註解(無論如何,這是一個壞主意 - 交易屬於更深層次)。
其他一切工作方式完全相同 - AOP,JDBC等
實際上,如果使用AspectJ +'@ Configurable',則可以在Wicket組件的方法上使用'@ Transactional'。但我不確定是否會推薦使用它。 – tetsuo 2013-03-10 02:32:42
檢票是一個表現層框架。它不會處理DI,交易或連接。
但它可以與多個框架,包括Spring,吉斯(官方檢票模塊,wicket-spring和wicket-guice)和CDI /焊縫(wicket-cdi,從Igor Vaynberg側項目時,檢票提交者之一)被容易地集成。
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>
我建議完全離開Spring和嘗試的Java EE 6 + Wicket 6.x.在Java EE 5的日子裏,我使用Spring MVC,然後是Spring + Wicket,但是Java EE 6作爲中間件層只是勝過Spring解決方案。
更新2017年: 在Java 7新的東西和8(lambda表達式,方法refereces,默認的接口方法的實現,...),在Java EE 7 + Wicket 8組合更是吸引人。儘管Spring MVC非常流行,並且可能有更好的學習曲線,但是一旦你嘗試Wicket,當你遇到「下一個很酷的事情」(Angular2)時,你會錯過它。
注:我由紅帽支付,但以上是我誠實的意見。 2011年,我會告訴你和Spring一起去。
忘記在小門上。簡單的彈簧MVC,Twitter引導程序佈局和整個彈簧組合可讓您創建具有高度安全性的可擴展和頂級高性能應用程序。一旦你落後你的第一印象並開始真正的發展,門票很痛苦。
http://www.slideshare.net/mraible/comparing-jvm-web-frameworks-february-2014希望能幫助爲我做決定這個演示文稿真的很有幫助。
我應該添加測試你的東西的能力(我發現SpringJUnit4ClassRunner對於測試彈簧控制器非常有用) – user1241320 2012-02-29 22:13:14
Wicket對測試也有一些基本的支持。通過單元測試很容易測試UI頁面(或其部分)。只要您不想測試Ajax功能 – bert 2012-03-01 07:36:27
WicketTester也會覆蓋Ajax行爲。純JavaScript測試不是Wicket業務的一部分。 – 2012-03-01 08:27:21