use*_*320 10 wicket spring-mvc
我对Spring MVC有很长的(并且很满意)经验,但最近我对Wicket感兴趣.
我的问题还在于如何处理(使用Wicket)DI,事务管理,JDBC连接以及所有这些内容?可以将Springsource套件的某些部分与Wicket混合使用吗?Wicket&Weld?Wicket&Guice?
tet*_*suo 17
Wicket是一个表示层框架.它不会处理DI,交易或连接.
但它可以很容易地与许多框架集成,包括Spring,Guice(官方Wicket模块,wicket-spring和wicket-guice)和CDI/Weld(wicket- cdi,来自Igor Vaynberg,Wicket提交者之一的副项目)).
下面是一个简单的Wicket应用程序与Spring.事务位是普通的旧Spring配置,所以我没有打扰包括它们.
HelloWorldService.java
public class HelloWorldService {
private String message;
public void setMessage(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
}
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
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;
}
}
Run Code Online (Sandbox Code Playgroud)
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());
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
Tom*_*icz 12
Wicket有效地取代了Spring MVC,而不是Spring容器本身.Wicket通过@SpringBean注释轻松地与Spring集成,允许您将Spring bean(服务,DAO等)直接注入页面.你无法以相反的方式执行DI - 这是有充分理由的.
将Spring和Wicket结合使用是一个明智的选择.但是据我所知,Wicket页面和组件不是由Spring容器管理的,所以你不能@Transactional在它们上使用注释(无论如何这都是一个坏主意 - 事务属于更深层次).
其他一切工作完全相同 - AOP,JDBC等.
我建议完全离开Spring并尝试Java EE 6 + Wicket 6.x. 我在Java EE 5时代使用的是Spring MVC,然后是Spring + Wicket,而Java EE 6作为中间件层只是简单地击败了Spring解决方案.
2017年更新: 随着Java 7和8中的新功能(lambdas,方法参考,默认接口方法实现......),Java EE 7 + Wicket 8组合更具吸引力.虽然Spring MVC很受欢迎,并且可能有更好的学习曲线,但是一旦你尝试Wicket,当你进入"下一个很酷的东西"(在我的情况下是Angular2)时你会想念它.
注意:我是由Red Hat支付的,但以上是我的诚实意见.在2011年,我会告诉你去春天.
| 归档时间: |
|
| 查看次数: |
12972 次 |
| 最近记录: |