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 3: Bean Scopes ab_3_Bean_Scopes
Credit where credit is due Spring Recipies 2 nd Edition (Gary Mak, Josh Long and Daniel Rubio)
Dedication Mike Youngstrom and Bruce Campbell for their undying love and support through this process – And for reviewing and offering suggestions And for Spencer Uresk and Mike Heath for the inspiration And a special thanks to the rabbit farm who made this all possible