Course Duration: 5 days
Prerequisites:

Students are expected to have a reasonable command of the Java Language. All attendees must have at least one year of full-time Java and JSP development experience. Prior experience with servlets and JSP is recommended but not required.

Course Outline:
  • Spring Introduction
    • Shortcomings of Java EE and the Need for Loose Coupling
    • Managing Beans, The Spring Container, Inversion of Control
    • The Factory Pattern
    • Configuration Metadata – XML, @Component, Auto-Detecting Beans
    • Dependencies and Dependency Injection (DI) with the BeanFactory
    • Setter Injection
  • Dependency Injection
    • Using the Application Context
    • Constructor Injection
    • PropertyEditors
    • Factory Methods
    • Crucial Namespaces ‘p’ and ’c’
    • Configuring Collections
    • Bean Definition Inheritance and Collection Merging
    • Expression Languages, SpEL
  • The Spring Container and API
    • The Spring Managed Bean Lifecycle
    • Key interfaces, Annotations and BeanPostprocessors
    • Event Handling and Listeners
    • Message Sources and Internationalization
    • Autowiring Dependencies
  • Other Metadata Configurations
    • Annotation Configuration @Autowired, @Required, @Resource
    • @Component, Component Scans. Component Filters
    • @Value and @Qualifier
    • Life Cycle Annotations
    • Java Configuration, @Configuration, XML free configuration (Optional)
    • The AnnotationConfigApplicationContext
  • Spring 4 Specifics
    • Groovy Bean Definition DSL
    • Generic Qualifiers for Bean Injection
    • Using CGLib Proxy classes with the objenesis library
    • Using @Conditional and @Lazy
    • Java 8 feature support
  • Spring and Persistence
    • Spring and JDBC
    • JdbcTemplate/JdbcDaoSupport
    • Spring and Hibernate
    • HibernateTemplate/HibernateDaoSupport
    • Spring and JPA
    • JpaTemplate/ JpaDaoSupport
    • Direct access to JPA via @PersistenceUnit and @PersistenceContext
    • CRUD methods
  • Spring AOP
    • PointCuts, JoinPoints, Aspects, Adices
    • Before, After, AfterReturning, AfterThrowing, Around
    • Annotation Configuration
    • XML Configuration
  • Transaction Management
    • Transaction Propagation
    • Declarative Transaction Management: @Transactional
    • Annotation Configuration, Rollback Rules, Isolation
    • Advisors
    • XML Configuration
  • Develop Web Applications using the Spring Framework – Spring MVC
    • The WebApplicationContext and the ContextLoaderListener
    • Model View Controller
    • Front Controller Pattern
    • DispatcherServlet Configuration
    • Controllers, RequestMapping
    • Working with Forms
    • Getting at the Request, @RequestParam, @RequestHeader, @CookieValue
    • ModelAndView
    • Using the POST Redirect GET pattern with FlashAttributes
    • Advanced techniques
    • Spring form tags and Model Binding, @ModelAttribute
    • Chain multiple View Resolvers
    • Handler Interceptors
    • Data Validation JSR303
  • Spring Controllers and Ajax
    • JavaScript(JQuery) access to Controllers (brief selector overview)
    • URITemplates
    • Using @ResponseBody
    • JSON and XML data exchange
    • HTTP GETS and POSTS
  • RESTful Web Services
    • Core REST concepts
    • REST support in Spring 4.x
    • Use Spring MVC to create RESTful Web services
    • REST specific Annotations in Spring
    • URITemplates, @PathVariable, @RequestParam
    • JSON and XML data exchange
    • @RequestMapping
    • Contract Negotiation (CONNEG)
    • Client access with HttpClient or RestTemplate