managed system
Traditional
monolithic design
main() new to inititantiate other objects
unmanaged system
desktop applicatoin
web application
container managed
lifycycle control
just configure
more complex
multithreading
New
rigidly coupled with concrete type
Service Advice
intercept method invocations
Tapestry 5 Request Process
Tapestry 5 Filter
HttpServletRequestHandler
ComponentRequestFilter
ComponentRequestHandler
ComponentEventRequestFilter
ComponentEventRequestHanler
PageRenderRequestFilter
PageRenderRequestHandler
Methodologies
Inside Tapestry
practice
reading and summary
learn
Diagrams
Logical View
Take Notes
Look into tapestry 5 classes, learn the mechanisms
浮動主題
@LoginRequired
LoginRequiredFilter.class
configuration.add("LoginRequired", LoginRequiredFilter.class
ComponentRequestHandler.class
@UsesOrderdeConfiguration(ComponentRequestFilter.class)
浮動主題
Services
Service Interface
Uniquely Identified Service ID
best practices
proxies
Service Implementation
Configuration
Map
Ordered List
Collection
Features
instantiated as needed
invoked on the proxy
thread-safe
Service Realization
Instantiating a service
injecting dependencies
decorating the service
a service transitions from virtual (just a proxy) to real (fully instantiated and ready to operate).
Scope
Default:Singleton
Service Dependencies
injected into a service builder
collaborators
point of Injection
annotations
Module
Module Class
Plain Java class
Bind Service Interfaces to Service Implementation classes
Contribute Configuration Data into Service Configurations
Decorate Services with interceptors
Provide explicit code for building service
Set Default Marker for all Services
Static or Instance Methods
Define Services
instantiating the service implementation
service builder methods
Decorate Services
create interceptor objects
adding behaviors
implement the same service interface
Contribute Configuration
invoked to contribute objects into configurations
registry
Service Builder Methods
triditional way to define services
Auto Build
Marker
Configuration
IoC Concepts
Goal: Simplicity, Power, reusable, robust, No XML
ideas from C/C++ pointer
container managed objects
lifecycle
shared objects
user state
multi-threads
Specification
house built
local services
programming
ioc services
IoC Container proivdes local services
Unit Test
EasyMock
Simple is Beautiful
Small Objects with simple responsibilities
Collaborate among each other
IoC Container
IoC Registry
Tapestry Ioc Module
Tapestry Module
Lifecycle
Lazy
when requires
defined
registered
virtual
some objects repy on it
depends
ready to use
Shutdown
consumers do not need to care all lifecycle
Service
like a proxy object
Principles of Responsibilities
T5 Dependency Injection
important parts of realization
injection by constructors
pass parameters to service constructor methods
match parameter type
direct injection into fields
thread safety
parameter annotations
Basic Tapestry Unit is Service