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