| Java Training   Overview 
Over the years, Spring has added many new capabilities, in line with the increasing capabilities of the Java platform. As well as being current with Spring 4, this course introduces techniques for using these powerful capabilities. It includes complete coverage of the three main configuration styles: Java-based (@Configuration), annotation-based (@Component), and the traditional XML-based configuration that may still play an important role in existing and new projects. It also provides guidelines for when and how to use each one.
Java Training   Skills Gained
 The course starts with in-depth coverage on using the powerful capabilities of Spring's Core module to reduce coupling and increase the flexibility, ease of maintenance, and testing of your applications. It goes on to cover many of the most important capabilities of Spring, including integrating persistence layers (e.g. Hibernate/JPA) with Spring, using Spring's powerful Aspect Oriented Programming (AOP) to program cross-cutting concerns in a safe and maintainable way, and using Spring's declarative transaction capabilities.
 
 The course includes integration of Spring with Java EE Web applications, and an introduction to Spring MVC. Spring MVC utilizes a Model-View-Controller pattern for building Web applications, and the intoduction covers the basics of Spring MVC, and how it supports organizing your Web applications in a highly structured, loosely coupled manner. This includes an introduction to REST (Representational state transfer), and how to use Spring MVC to build RESTful resources and invoke them from Ajax-based front ends.
 
 This course is hands on with labs to reinforce all the important concepts.  It will enable you to build working Spring applications and give you an understanding of the important concepts and technology in a very short time.
 
 The standard platform does all labs with the Eclipse IDE, and the lab instructions include detailed directions for setting up and using it. The course can be made available for all major development environments, including IBM RAD and IntelliJ.
 
    Hands-OnUnderstand the core principles of Spring, and of Dependency Injection (DI) / Inversion of ControlUse the Spring Core module and DI to configure and wire application objects (beans) togetherKnow the different types of metadata (XML, annotations/@Component, and Java Configuration/@Configuration), and how and when to use themUnderstand and use the complete capabilities of the Core module, such as lifecycle events, bean scopes, and the  Spring APIWork with the ORM (Object-Relational Mapping) module to integrate Spring with technologies such as Hibernate or JPA.Understand and use Spring's powerful AOP capabilities for programming cross-cutting concerns across multiple  points in an application Learn safe and maintainable techniques for programming with AOPUnderstand and use Spring's transaction support, including the easy-to-use Java annotation support, as well as the tx/aop XML configuration elementsIntegrate Spring with Java EE Web applicationsBuild Web applications with Spring MVC, including configuration using Java config and Servlet 3 capabilitiesUnderstand REST, and use Spring MVC to build RESTful servicesUse Ajax-based front ends with Spring MVC / Spring REST 
Minimum 50% hands-on labs
 Supported Platforms
 
Spring 4, Eclipse/ Spring Tool Suite (STS), Can be supported on IBM RAD/WAS, IntelliJ, NetBeans, GlassFish AS with advance notice
 Java Training   Course Duration
 
 5 Days
 
 Java Training   Course outline
 
 
 Session 1:   Introduction to Spring 
        Overview of Spring Technology
          
            Challenges for Modern ApplicationsMotivation for Spring, Spring ArchitectureThe Spring FrameworkSpring Introduction
          
            Managing Beans Inversion of Control / IoC,  Dependency Injection / DIConfiguration Metadata Overview, Configuring Beans (XML)The Spring Container
          
            Overview of the Spring ContainerA Simple Spring ExampleApplicationContext OverviewClassPathXmlApplicationContext, FileSystemXmlApplicationContext, AnnotationConfigApplicationContextAPI and UsageDependencies and Dependency Injection (DI)
          
            Examining DependenciesDependency InversionDependency Injection (DI) in Spring - Basic Configuration and Usage Session 2:  Configuration in Depth 
        Annotation Driven Configuration
          
            JSR 330 (@Named) and Spring (@Component) annotation styles@Named/@Component, @Inject/@Autowired, @Repository, @ServiceConfiguring Beans and Autowiring with AnnotationsEnabling Annotations - context:component-scanPros and ConsJava Based Configuration (@Configuration)
          
            Overview - code-centric Configuration@Configuration and @BeanDependency InjectionResolving Dependencies on Other Beans, Injecting Configuration ClassesPros and ConsIntegrating Configuration Types
          
            Choosing a Configuration StyleIntegrating Configuration StylesImporting: @Import and Scanning with @Configuration styleBean Scope and Lifecycle
          
            Bean Scope Defined - singleton, prototype, and Other Scopes
            Configuring ScopeBean Creation Lifecycle, Lifecycle Callbacks BeanPostProcessor, Event Handling Session 3:  Wiring in Depth 
        Value Injection
          
            Configuring Value Properties, Property ConversionsExternalizing Values in Properties FilesConstructor Injection
          
	       Constructor Injection OverviewConfiguration - @Configuration and XMLp: and c: namespaces for XML configurationQualifiers / Domain Specific Language (DSL)
          
            Limitations of AutowiringQualifiers and DSLCreating and Using an Annotation-Based DSL for Bean ConfigurationBenefits of Qualifiers for Bean ConfigurationProfiles
          
            Profiles OverviewConfiguring Profiles (XML and @Configuration)Activating ProfilesOverview of SpEL Session 4:  Database Access with Spring 
        Overview of Spring database supportConfiguring a DataSourceUsing Spring with Hibernate
          
           High Level Hibernate OverviewSessionFactory configuration, LocalSessionFactoryBeanContextual Sessions and Spring IntegrationUsing Spring with JPA
          
	     Managing the EntityManager (EM)LocalContainerEntityManagerFactoryBean and Container-managed EMsJEE and JNDI Lookup of the EMConfiguration and Vendor AdaptorsCreating a JPA Repository/DAO Bean - @PersistenceUnit, @PersistenceContext Session 5:  Aspect  Oriented Programming (AOP) 
        Overview of AOP
          
	    Crosscutting ConcernsAOP Basics, Aspect, Joinpoint, Advice, PointcutSpring AOP Introduction
          
	    Configuration - XML and @AspectJ
           Defining an Aspect, Pointcut, and AdviceHow Advice is TriggeredPointcut Expressions and Advice
          
            Pointcut Expression OverviewThe execution() DesignatorOther Designators (within, target, args, @target, ...)Kinds of Advice - before, after, around, after-returning, after-throwingMarker Annotations (Rubber Stamp AOP)
          
            Issue with AOP ConfigurationDefining an AOP Marker / Rubber StampConfiguring AOP Using a MarkerAdvantages of Marker Annotations@AspectJ Based AOP Support
          
            @AspectJ Annotations OverviewDefining an Aspect, Pointcut, and AdviceOther Considerations
          
            Spring AOP Proxies and Self-Invocation IssuesLoad-Time WeavingCaveats of AOP Session 6:  Spring  Transaction (TX) Management 
        Intro to Spring Transaction Management
          
	    Spring Transaction ManagersSpring Declarative TX ManagementSpring TX Scope and PropagationSpring TX Attributes (REQUIRED, SUPPORTS, etc)XML Configuration of Transactions
          
            Specifying Advice, TX Attributes, and MethodsLinking Advice with PointcutsBenefits of XML Configuration of TX Behavior Session 7: Spring Web Integration and Intro to Spring MVC 
        Integrating Spring with Java EE Web Apps - ContextLoaderListener and WebApplicationContextSpring Web MVC Overview, Capabilities, Architecture (Front Controller, MVC Pattern)Spring MVC Basics
          
            DispatcherServlet, Configuration (@EnableWebMvc, Servlet 3 initialization),  mvc NamespaceControllers, @Controller, @RequestMapping (Handler Methods)@RequestParam and Parameter BindingView ResolversController Details, @RequestMapping, @RequestParam, @PathVariable Model Data,  @ModelAttribute, Model/ModelAndView Classes Session 8: Additional Spring MVC Capabilities 
            Reference Data with @ModelAttributeForms and Binding, Spring Form TagsSession Attributes, @SessionAttributesValidation / JSR-303 Session 9: RESTful Services with Spring 
        REST Overview (Characteristics/Capabilities, URI Templates, REST vs SOAPREST and Spring MVC
           
	       Spring support for REST@RequestMapping/@PathVariable, @RequestBody, @ResponseBody, HTTP Method conversionWriting RESTful ControllersReturning XML and JSON dataClient-side Access to RESTful Services
           
           Ajax access (Browser/JavaScript/jQuery)Using Spring's RestTemplateProgramming Common REST Patterns
           
	       GET: ReadPOST: CreatePUT: UpdateDELETE: Delete Session 10:  XML Specific Configuration 
        Collection Valued Properties - Configuring and using lists, sets, etc.Additional Capabilities
          
            Factory Classes and Factory MethodsDefinition Inheritance (Parent  Beans)AutoWiring with XMLInner Beans, Compound Names Appendix:  Maven and Spring 
 |