In our Core Spring course, participants will learn how to use the key parts of Spring to build a working Java application. The course goes beyond basic Dependency Injection (DI) and Inversion of Control (IOC) to teach students Spring Model-View-Controller (MVC), Spring Aspect Oriented Programming (AOP) and how to work with data structures using JDBC, Hibernate and JPA.

Course Duration: 5 days
Prerequisites:

Solid understanding of Java programming and web applications is strongly recommended.

Course Objectives:
  • Gain an overview of the key parts of the Spring Framework
  • Learn Inversion of Control and Dependency Injection
  • Practice working in Spring and building a Spring Web Application
  • Code using Spring Annotations and Aspect Oriented Programming
  • Acquire working knowledge of data structures in Spring
Course Outline:
  • Spring Introduction
    • Inversion of Control and Dependency Injection
    • BeanFactory
    • Getting Started with Spring Dependency Injection and XML meta-data
    • Setter Injection
  • Dependency Injection
    • ApplicationContext
    • Converters
    • Constructor Injection
    • Factory Methods
    • Configuring Collections/ util namespace
    • Bean definition Inheritance
    • Collection Merging
    • Externalize the configuration
    • SPEL – Spring Expression Language
    • Control the order of bean instantiation
    • P namespace and C namespace
  • Spring Container and API
    • Bean Lifecycle
    • Bean Post Processors
    • JSR 250 Annotations
    • Events
    • MessageSources and Internationalization
    • Autowiring
  • Other Meta Data Configurations
    • Annotations @Required, @Autowired, @Resource, @Scope, @Qualifier
    • @Component and Component Filters
    • @Value and SPEL
    • Java Configuration
    • AnnotationConfigApplicationContext
    • @Component, @Bean
    • Using @Autowired and Component with AnnotationConfigApplicationContext
  • Spring and JDBC
    • Legacy JDBC
    • Template Patterns
    • Connection Pooling
    • JdbcTemplate and JdbcDaoSupport
    • RowMappers
    • NamedParameterJdbcTemplate
    • ParameterizedBeanPropertyRowMapper
    • MappingSqlQuery

Persistence Frameworks

  • Hibernate
    • HibernateTemplate/HibernateDaoSupport
    • Hibernate Query Language
  • JPA
    • Entities
    • JpaTemplate/JpaDaoSupport
    • Injecting the EntityManager @PersistenceContext and @PersistenceUnit
    • JPA Queries and Named queries
  • Spring OPA
  • Spring Data MongoDB
    • NoSQL and BSON
    • MongoDB
    • MongoTemplate
    • Inserts, Updates and Retreival
    • Managing Collections

Proxies and the Dynamic Proxy Pattern

  • Cross Cutting Concerns AspectJ Annotation Configuration
    • Aspects/ JoinPoints/ Advice and PointCuts
    • AspectJ Annotations autoproxy
    • Define Pointcuts and Advice
    • @Before, @After, @AfterReturning, @AfterThrowing
    • Pointcut Expressions
    • @Around and accessing arguments
  • Spring AOP XML Configuration
    • Defining Advices and Aspects aop-config
  • AspectJ
  • Spring Transactions
    • @Transactional, transaction propagation
    • Declarative Rollback
    • XML Configuration
  • Spring and the Web
    • WebApplicaiotnContext
    • ContextLoaderListener
  • Spring MVC
    • Model View Controller
    • DispactherServlet Configuration
    • Controllers, RequestMapping
    • Working with Forms
    • Getting at the Request, @RequestParam, @RequestHeader, @CookieValue
    • @ResponseBody
    • ModelAndView
    • Spring form tags and Model Binding, @ModelAttribute
    • Chain View Resolvers