Chapter 9: Spring Integration"
From Documentation
Line 92: | Line 92: | ||
</source> | </source> | ||
+ | |||
+ | == Define Spring Beans == | ||
<source lang='java' high='1, 2'> | <source lang='java' high='1, 2'> | ||
Line 107: | Line 109: | ||
public class SidebarPageConfigPagebaseImpl implements SidebarPageConfig{ | public class SidebarPageConfigPagebaseImpl implements SidebarPageConfig{ | ||
... | ... | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | |||
+ | == Retrieve Spring Beans == | ||
+ | |||
+ | <source lang='java' high='1,11'> | ||
+ | @VariableResolver(DelegatingVariableResolver.class) | ||
+ | public class SidebarChapter4Controller extends SelectorComposer<Component>{ | ||
+ | |||
+ | private static final long serialVersionUID = 1L; | ||
+ | |||
+ | //wire components | ||
+ | @Wire | ||
+ | Grid fnList; | ||
+ | |||
+ | //wire service | ||
+ | @WireVariable("sidebarPageConfigPagebase") | ||
+ | SidebarPageConfig pageConfig; | ||
+ | |||
+ | ... | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | |||
+ | <source lang='java' high='1, 6'> | ||
+ | @VariableResolver(DelegatingVariableResolver.class) | ||
+ | public class ProfileViewModel implements Serializable{ | ||
+ | private static final long serialVersionUID = 1L; | ||
+ | |||
+ | //wire services | ||
+ | @WireVariable | ||
+ | AuthenticationService authService; | ||
+ | @WireVariable | ||
+ | UserInfoService userInfoService; | ||
+ | ... | ||
} | } | ||
</source> | </source> |
Revision as of 07:31, 31 January 2013
Overview
Spring Framework is a popular application development framework for enterprise Java. One key element is its infrastructural support: a light-weighted IoC (Inversion of Control) container that manages POJOs as Spring beans and their dependency relationship.
In this chapter, we won't create new example applications but will make previous examples integrated with Spring.
How to Integrate Spring Framework
The most common integration way is to let Spring manage an application's dependencies.
Configuration
Maven
Extracted from pom.xml
<properties>
<zk.version>6.5.1</zk.version>
<maven.build.timestamp.format>yyyy-MM-dd</maven.build.timestamp.format>
<packname>-${project.version}-FL-${maven.build.timestamp}</packname>
<spring.version>3.1.2.RELEASE</spring.version>
</properties>
...
<!-- Spring 3 dependencies -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>2.2.2</version>
</dependency>
Deployment Descriptor
Extracted from web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 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">
<description><![CDATA[ZK Tutorial]]></description>
<display-name>ZK Tutorial</display-name>
<!-- ZK configuration-->
...
<!-- Spring configuration -->
<!-- Initialize spring context -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Enable webapp Scopes-->
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<welcome-file-list>
<welcome-file>index.zul</welcome-file>
</welcome-file-list>
</web-app>
WEB-INF/applicationContext.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
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.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package="org.zkoss.tutorial" />
</beans>
Define Spring Beans
@Service("authService")
@Scope(value="singleton",proxyMode=ScopedProxyMode.TARGET_CLASS)
public class AuthenticationServiceImpl implements AuthenticationService,Serializable{
...
}
@Component("sidebarPageConfigPagebase")
@Scope(value="request",proxyMode=ScopedProxyMode.TARGET_CLASS)
public class SidebarPageConfigPagebaseImpl implements SidebarPageConfig{
...
}
Retrieve Spring Beans
@VariableResolver(DelegatingVariableResolver.class)
public class SidebarChapter4Controller extends SelectorComposer<Component>{
private static final long serialVersionUID = 1L;
//wire components
@Wire
Grid fnList;
//wire service
@WireVariable("sidebarPageConfigPagebase")
SidebarPageConfig pageConfig;
...
}
@VariableResolver(DelegatingVariableResolver.class)
public class ProfileViewModel implements Serializable{
private static final long serialVersionUID = 1L;
//wire services
@WireVariable
AuthenticationService authService;
@WireVariable
UserInfoService userInfoService;
...
}