Intermediate Spring Matt Wheeler. Notes This is a training NOT a presentation Please ask questions Prerequisites – Introduction to Java Stack – Basic.

Slides:



Advertisements
Similar presentations
Introduction to Spring Continued Matt Wheeler. Notes This is a training NOT a presentation Please ask questions Prerequisites – Introduction to Java Stack.
Advertisements

Intermediate Spring Matt Wheeler. Notes This is a training NOT a presentation Please ask questions Prerequisites – Introduction to Java Stack – Basic.
Introduction to Spring Matt Wheeler. Notes This is a training NOT a presentation Please ask questions Prerequisites – Introduction to Java Stack – Basic.
Intermediate Spring Matt Wheeler. Notes This is a training NOT a presentation Please ask questions Prerequisites – Introduction to Java Stack – Basic.
Grid Computing, B. Wilkinson, 20043a.1 WEB SERVICES Introduction.
© 2004, The Trustees of Indiana University 1 OneStart Workflow Basics Brian McGough, Manager, Systems Integration, UITS Ryan Kirkendall, Lead Developer.
Introduction to Spring Continued Matt Wheeler. Notes This is a training NOT a presentation Please ask questions Prerequisites – Introduction to Java Stack.
Web Applications Basics. Introduction to Web Web features Clent/Server HTTP HyperText Markup Language URL addresses Web server - a computer program that.
LDS Account and the Java Stack. Disclaimer This is a training NOT a presentation. – Be prepared to learn and participate in labs Please ask questions.
Web Services with Apache CXF Part 2: JAXB and WSDL to Java Robert Thornton.
1 November 21st 2009 Shaun Abram An Introduction to Spring.
The Spring Framework: A brief introduction to Inversion of Control James Brundege
Introduction to Spring Matt Wheeler. Notes This is a training NOT a presentation Please ask questions Prerequisites – Introduction to Java Stack – Basic.
Struts 2.0 an Overview ( )
Spring Roo CS476 Aleksey Bukin Peter Lew. What is Roo? Productivity tool Allows for easy creation of Enterprise Java applications Runs alongside existing.
SPRING Framework Marcin Sztec.
Intermediate Spring Matt Wheeler. Notes This is a training NOT a presentation Please ask questions Prerequisites – Introduction to Java Stack – Basic.
WebWork in Action An introduction to WebWork Patrick A. Lightbody.
Intermediate Spring Matt Wheeler. Notes This is a training NOT a presentation Please ask questions Prerequisites – Introduction to Java Stack – Basic.
Spring Framework. Spring Overview Spring is an open source layered Java/J2EE application framework Created by Rod Johnson Based on book “Expert one-on-one.
OSGi.
Spring Overview, Application demo -Midhila Paineni 09/23/2011 Spring Overview, Application demo9/8/20151.
Internationalization and the Java Stack Part 1 Matt Wheeler.
Internationalization and the Java Stack Matt Wheeler.
Parsley Introduction Kui Huang Oct. 13, Topics Background Dependency Injection Object Lifecycle Message Bus Sample FW Extensions.
Introduction to Java Server Pages (JSPs) Robert Thornton.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Understanding the Bean Lifecycle An.
Introduction to Spring (part 2) Matt Wheeler. Notes This is a training NOT a presentation Please ask questions Prerequisites – Introduction to Java Stack.
Spring core v3.x Prepared by: Nhan Le. History v3.0 Spring Expression Language Java based bean metadata v3.1 Cache Abstraction Bean Definition Profile.
Internationalization in the Java Stack Matt Wheeler.
Internationalization in the Java Stack Matt Wheeler.
Introduction to Spring Matt Wheeler. Notes This is a training NOT a presentation Please ask questions Prerequisites – Introduction to Java Stack – Basic.
Hyper/J and Concern Manipulation Environment. The need for AOSD tools and development environment AOSD requires a variety of tools Life cycle – support.
Creative Commons Attribution- NonCommercial-ShareAlike 2.5 License Sakai Programmer's Café Sakai Montreal CRIM Workshop Introduction to Spring Framework,
Web Services with Apache CXF Part 2: JAXB and WSDL to Java Robert Thornton.
New Perspectives on XML, 2nd Edition
Slide 1 Extending Tuscany Raymond Feng Apache Tuscany committer.
Shannon Hastings Multiscale Computing Laboratory Department of Biomedical Informatics.
Architectural pattern: Interceptor Source: POSA II pp 109 – 140POSA II Environment: developing frameworks that can be extended transparently Recurring.
WAM and the Java Stack. Disclaimer Please ask questions There are hands on labs Prerequisites: – Basic Java knowledge – Basic Spring knowledge – LDS Account.
Web Services with Apache CXF Part 2: JAXB and WSDL to Java Robert Thornton.
November 25, 2015 © IBM Corporation Unified Method Framework (UMF) RMC Reference Architecture Overview Kelli Houston
Chính phủ điện tử TS. Phạm Văn Tính Khoa CNTT, ĐH Nông Lâm TP.HCM
Intermediate Spring Matt Wheeler. Notes This is a training NOT a presentation Please ask questions Prerequisites – Introduction to Java Stack – Basic.
INTEGRATION OF BACKBONE.JS WITH SPRING 3.1. Agenda New Features and Enhancements in Spring 3.1 What is Backbone.js and why I should use it Spring 3.1.
Implementation of EIDE Gateway using ACES Callouts WECC DEWG EIDE Training.
Spring Cleaning How to do more with less XML Craig Walls Gateway Software Symposium (St. Louis) September 29, 2007
Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma Presentation to the 20 th.
Jonathan Gallimore | Tomitribe Cluster your application with JCache and CDI.
Introduction to Servlets Allen Day. Notes This is a training NOT a presentation Please ask questions Prerequisites.
1 Spring Framework April, 2012 Lam Ho Lam To. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 2 1.Spring Overview 2.Framework.
Java Programming: Advanced Topics 1 Enterprise JavaBeans Chapter 14.
2006/2007 Licence Apache 2.0 Castle.Igloo. Castle Igloo Basics Pre-require Concept Scopes PageFlow Configuration Controller View Exemple Castle.Igloo.
LDS Account and the Java Stack. Disclaimer This is a training NOT a presentation. – Be prepared to learn and participate in labs Please ask questions.
Internationalization and the Java Stack Part 2 Matt Wheeler.
WAM and the Java Stack. Disclaimer This is a training NOT a presentation. – Be prepared to learn and participate in labs Please ask questions Prerequisites:
Development of the EDEX plug-in Ingest overview Manual Endpoint LDM DistributionSrv Plugin decoder Plugin Data Object PersistIndexSrv NotificationSrv.
CS520 Web Programming Spring – Inversion of Control Chengyu Sun California State University, Los Angeles.
Spring Fling Phillip Warner. Spring Framework ● Dependency Injection (DI) Framework – “Inversion of Control” ● Facilitates Good Programming Practices.
Intermediate Spring Matt Wheeler.
Internationalization
Spring Boot Introduction
CS520 Web Programming Spring – Inversion of Control
By Ru Shen Department of Computer Science UAlbany, 2008
J2EE Application Development
EPIC INFOTECH CONSULTING GROUP
JAsCo an Aspect-Oriented approach tailored for
Tuesday Brown Bag Inversion of Control with Howard Abrams
Leveraging ColdSpring To Make Better Applications
New Applications Modeled
Presentation transcript:

Intermediate Spring Matt Wheeler

Notes This is a training NOT a presentation Please ask questions Prerequisites – Introduction to Java Stack – Basic Java and XML skills – Installed LdsTech IDE (or other equivalent – good luck there ;)

Overview Bean lifecycle Xml Configuration Extensions (namespace handlers) Lifecycle hooks JSR 250 Bean post processors Spring Annotations JSR 330

Review Last time we went over – Bean definitions – Dependency Injection (DI) and Inversion of Control (IoC) – Application context – Bean scopes

Review ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); SomeBean someBean = context.getBean(SomeBean.class); someBean.callMethod(); Bean definition (beans.xml) Application Context

Spring Bean Lifecycle 1. Create bean definitions (from xml or annotations, or, …) 2. Instantiate beans using the definitions 3. Set bean dependencies (values and bean references) on the newly instantiated beans 4. Initialization 5. Deliver bean to requester for use 6. On container shutdown call destruction callback method

Xml Configuration Extension Also called namespace handlers Shorten bean definition configuration Provide easily reusable definitions Self documenting More readable

Spring Xml Configuration Extensions SchemaDescription / Documentation utilCreate non-anonymous collection types that can be referenced by id reference/html/xsd-config.html#xsd-config-body-schemas-util jeeElements such as jndi support / ejb shortcuts reference/html/xsd-config.html#xsd-config-body-schemas-jee langExpose beans written in another language like JRuby or Groovy reference/html/xsd-config.html#xsd-config-body-schemas-lang jmsDeal with configuring JMS-related beans reference/html/xsd-config.html# xsd-config-body-schemas-jms txTransaction support reference/html/xsd-config.html# xsd-config-body-schemas-tx

Xml Configuration Extensions (cont.) SchemaDescirption / Documentation aopHelpers for Spring’s aspect oriented programming mechanisms reference/html/xsd-config.html# xsd-config-body-schemas-aop contextConfiguration relation to the application context plumbing reference/html/xsd-config.html# xsd-config-body-schemas-context toolsConfiguration for adding tooling specific meta-data reference/html/xsd-config.html# xsd-config-body-schemas-tool securityProvides elements for web security configuration config.html mvcProvides interceptors, view-conroller, ….. reference/html/mvc.html#mvc-config

Example You have options Or

Wait that’s not all And this

Another Example Let us utilize a namespace handler <beans xmlns=" xmlns:xsi=" xmlns:util=" xsi:schemaLocation=" abc def ghi jkl abc def ghi jkl

Xml Configuration Extension architecture Pieces of namespace handlers Create an xml schema that describes allowable elements Write a namespace handler Code a BeanDefinitionParser – Parses the defined xml and adds any necessary beans into the configuration

For Example Bottom line – Namespace handlers are backed by code The code supplements bean configuration and is a lot more than meets the eye Add a parser example here

DEMO

Lab 1: Xml Configuration Extensions _1_Xml_Configuration_Extensions

JSR 250 Annotations

Hooking into the Lifecycle Define init-method in bean definition The associated bean The init method is called after the bean had been initialized an all properties set public class SomeBean { public void init() { //some initialization code }

Spring Bean Lifecycle Review 1. Create bean definitions (from xml or annotations, or, …) 2. Instantiate beans using the definitions 3. Set bean dependencies (values and bean references) on the newly instantiated beans 4. Initialization 5. Deliver bean to requester for use 6. On container shutdown call destruction callback method

Jar Dependency JSR 250 Annotation Dependency (only required in Java 1.5) javax.annotation jsr250-api 1.0

Annotate the Class JSR 250 annotations annotation for bean initialization There is likewise counterpart – Called just before the bean is destroyed – Allows for cleanup of resources public class SomeBean public void init() { // do some initialization work }

Configure Annotation Handling Specify annotation handlers (bean post processors) <beans xmlns=" xmlns:xsi=" xsi:schemaLocation=" <beans xmlns=" xmlns:xsi= xmlns:context= xsi:schemaLocation="

Lab 2: JSR 250 Annotations _2_JSR_250_Annotations

Spring Annotations We have seen how to use annotations to call an init method during initialization Wouldn’t it be nice if didn’t need to define even the beans themselves in xml at all? – We will need something to scan the classes for annotations and register bean definitions

Welcome component-scan component-scan element in context schema – Scans classpath searching for matching beans Registers bean definitions matching classes – Can specify an include filter and/or exclude filter You can also assign a filter type for a targeted search – framework-reference/html/beans.html#beans-scanning-filters – annotation – assignable – aspectj – regex – cutsom

Bean Lifecycle and Component Scan 1. Create bean definitions (from xml or annotations, or, …) 2. Instantiate beans using the definitions 3. Set bean dependencies (values and bean references) on the newly instantiated beans 4. Initialization 5. Deliver bean to requester for use 6. On container shutdown call destruction callback method

For Example This configuration will (for the given packages): – Register bean definitions for all classes with “abc” in their names – Not register beans for any classes that extend / implement Animal <beans xmlns=" xmlns:xsi=" xmlns:context=" xsi:schemaLocation="

Naming What id will be given for beans that are registered By default it is the class name with the first letter lower cased – For example, the following will result in a bean definition with public class Rabbit { }

Naming What id will be given for beans that are registered? By default it is the class name with the first letter lower cased – For example, a class named Rabbit would result in a bean definition with id=“rabbit”

Annotation Scanning What do we do if: – The default naming is not acceptable – Difficult to come up with a pattern that matches only the beans that we want registered with Spring Annotation scanning

Spring Annotations Spring provides stereotype annotations to help identify a bean’s role the application architecture – denotes application services – denotes a view layer components – the most general stereotype annotation – denotes any class to be managed by Spring – most often used to demarcate DAOs – You can also create your own custom stereotype annotations

For Example In a given application context you may want to have the scanner – Register beans annotated with your custom annotation – But not register definitions for beans annotated <beans xmlns=" xmlns:xsi=" xmlns:context=" xsi:schemaLocation="

Naming So how does annotation scanning help naming? – The following will still register a bean with id=“rabbit” – But, this will register a bean with public class Rabbit { public class Rabbit { }

The Main Point All this to tell you that now you can create a bean automatically without defining it in xml That is to say, the following are basically equivalent in public class SomeBean { }

Scope But what about scope – i.e. what is the equivalent annotation for specifying a scope of prototype

@Scope Be sure to use org.springframework.context.annotation.Scope – Not javax.inject.Scope Possible values:

Putting it all together Xml definition Equivalent public class Turkey { }

Lab 3: Spring Annotations

Credit where credit is due Spring Recipies 2 nd Edition (Gary Mak, Josh Long and Daniel Rubio)