Spring FrameWork
Spring FrameWork
Spring framework
A practical introduction
Alef Arendsen
Software Engineer
JTeam / Support4J.net
Summary
Business tier
Domain model,
business objects
Integration tier
Persistence logic
A simple business object
<bean id=“dataSource”
class=“org.apache.commons.dbcp.BasicDataSource”>
class=“org.apache.commons.dbcp.BasicDataSource”
destroy-method=“close”>
<property name=“url”>
<value>${jdbc.url}</value>
</property>
. . . . .
</bean>
void setUrl(String url)
Adding transactional support
<bean id=“accountManagerTarget”
class=“example.AccountManagerImpl”/>
<bean id=“transactionManager”
class=“...DataSourceTransactionManager”>
<property name=“dataSource”
<ref local=“dataSource”/>
</property>
</bean>
<bean id=“accountManager”
class=“...interceptor.TransactionProxyFactoryBean”>
<property name=“target”>
<ref local=“accountManagerTarget"/>
</property>
<property name=“transactionAttributes”>
<props>
<prop key=“insert*”>PROPAGATION_REQUIRED</prop>
<prop key=“get*”>PROPAGATION_SUPPORTS</prop>
</props>
</property>
. . . . .
</bean>
The result so far
Presentation tier
Business tier
Account
AccountManager
Integration tier
DataSource
TransactionManager
DEMO
Agenda
● Message ResourceBundles
Simple controller
public class SubscriptionViewController
extends AbstractController {
<spring:bind path=“command.newsletter”>
<select name=“<c:out value=“${status.expression}”/>”>
<c:forEach items=“${news}” var=“letter”>
<option value=“<spring:transform value=“${letter}”/>”>
<c:out value=“${letter.name}”/>
</option>
</select>
</spring:bind>
Let’s see the flow
Client Client
ModelAndView containing
Validation,
empty Subscription
onSubmit()
formBackingObject()
SubscriptionController
insertSubscription()
NewsletterManager
The result so far
Presentation tier
JSPs
SubscriptionController
SubscriptionViewController
Business tier
Account
AccountManager
Integration tier
DataSource
TransactionManager
DEMO
Agenda
}
Other ORM and database tech.