Creating a Spring 2.0 namespace? Use Spring's AbstractBeanDefintionParser hierarchy.

Engineering | Ben Hale | August 28, 2006 | ...

Lately it seems like I've been focusing on creating Spring XML namespaces. It's been a lot of trial and error (both on the XSD and Spring side) to get a good pattern for creating parsers. One of the biggest confusions that I ran into was the AbstractBeanDefinitionParser hierarchy. At this point it isn't documented especially well (but there is a JIRA for it, so it'll be fixed before GA), so I'll give you a rundown of your choices, what they're good for and how to use them.

AbstractBeanDefinitionParser choices

There are three primary BeanDefinitionParsers that Spring provides to help you parse your XML namespaces.

I'm going to start at the most specific and work towards the most general to show how to gain more power when you need it. If you want to skip the examples and see the summary, check here

Validation logic (and my first post!)

Engineering | Colin Yates | August 25, 2006 | ...

Hey all!

This is my first post since I joined Interface21 last month. My previous blog is now officially deprecated and I won't be updating it anymore.

So what is the subject of my first post (except to introduce myself)?  Validation logic.  It won't be a walkthrough of how to perform validation in the Spring framework, rather it will discuss a particular bug bear of mine :)

In particular, I would like to discuss exactly what should go into validation logic.  It seems to be a no-brainer answer; "logic to validate the specified data".  OK, that is a no-brainer but read on :). As you know, the Spring framework provides a nice abstraction layer for your validation, via the Errors and Validator interfaces.  In particular the Validator is where you apply your business specific validation rules to your populated domain object.  Spring's excellent binding support is responsible for updating your domain model…

Steven's biz.blog has a new home

Engineering | Steven Schuurman | August 13, 2006 | ...

Hello all,

This is just a quick entry to let you know I have officially relocated my biz.blog to here, our new Interface21 team blog.  I'm excited about this group blog serving as the voice of Interface21.  For those of you who know me, you know to expect a different perspective.

I have got some saved drafts I am working on. Watch for new entries that provide insight into the business aspects of Interface21 soon...

Until then, Steven

Message Driven POJOs!

Engineering | Mark Fisher | August 11, 2006 | ...

Of all the new Spring 2.0 features and improvements, I must admit that Message-Driven POJOs are one of my personal favorites. I have a feeling that a lot of other Spring users will feel the same way.

Here I am providing a quick introduction. There is a lot more to show, and I will follow this up with other posts. For now though - this should provide you with enough information to get up and running with some truly POJO-based asynchronous JMS! I hope you are as excited about that as I am ;)

Prerequisites:

You will need the following JAR files on your classpath. I've also listed the versions that I am using (any spring-2.x version should be fine. I just dropped RC3 in there about 2 minutes ago in fact):

  • activemq-core-3.2.2.jar
  • concurrent-1.3.4.jar
  • geronimo-spec-j2ee-managment-1.0-rc4.jar
  • commmons-logging-1.0.4.jar
  • log4j-1.2.9.jar
  • jms-1.1.jar
  • spring-2.0-rc3.jar

Setup the Environment

First, we need to setup the environment. I am going to be using ActiveMQ, but the impact of changing a provider will be limited to modifications within this one file. I'm calling this file "shared-context.xml" since as you will see shortly, I am going to be importing these bean definitions for both sides of the JMS communication. Here are the "shared" bean definitions: the connection factory and two queues (one for the requests and one for replies):


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
                           http://www.springframework.org/schema/beans/spring-beans.xsd">
	
    <bean id="requestQueue" class="org.activemq.message.ActiveMQQueue">
        <constructor-arg value="requestQueue"/>
    </bean>
 
    <bean id="replyQueue" class="org.activemq.message.ActiveMQQueue">
        <constructor-arg value="replyQueue…

Spring 2.0 Release Candidate 3 Released

Releases | Juergen Hoeller | August 11, 2006 | ...

Dear Spring community,

We are pleased to announce that Spring 2.0 RC3 has been released.  Download | Documentation | Changelog

This third release candidate includes many refinements based on valuable user feedback that we received for the previous release candidates.  With this release, Spring 2.0 final is now just around the corner.

The most significant refinements include:

  • Spring 1.2 compatibility has been restored for default-lazy-init="true", with respect to detection of special beans (such as PropertyPlaceholderConfigurers) by type. Alongside, lazy class loading has been reworked to allow for placeholders in class names etc. Strict lazy class loading can still be enforced for special ApplicationContexts.
  • Persistence exception translation based on the @Repository annotation is now available for Hibernate3, JDO and TopLink as well, not just for JPA.  Exception translation is now based on the underlying ORM tool's native exceptions as far as possible, with Spring-specific SQLException translation only applying when explicitly specified.
  • In our JMS support DefaultMessageListenerContainer features refined resource handling (which works on JBoss 4.0 as well), and is able to recover from a broken Connection or Destination. The caching of JMS resources is now fully configurable, with sensible defaults for both the XA and the non-XA scenario. Furthermore, JmsTemplate reuses cached JMS resources within a JTA transaction.
  • Servlet and Portlet Web MVC support a common WebRequestInterceptor abstraction now, which allows Open Session/EntityManager/etc in View interceptors to be reused across Servlet and Portlet environments. As a consequence, all such Portlet-specific interceptors have been dropped in favor of the new generic ones (OpenSessionInViewInterceptor etc).

Of course, there are many further refiements in the details. Please see the changelog file (as well as the changelog in JIRA) for details.

Let us know about any remaining issues you might encounter with RC3.  The Spring 2.0 final release is now just around the corner.

Juergen Hoeller,
Lead Spring Framework Development

Simplifying Enterprise Applications with Spring 2.0 and AspectJ

Engineering | Adrian Colyer | August 10, 2006 | ...

An article I wrote for the InfoQ site has just gone live: Simplifying Enterprise Applications With Spring 2.0 and AspectJ.

I've heard a number of people saying that "AOP is too hard", or "AOP makes things too complex". In a way this article was written as a rebuttal of those views (hence the title, "Simplifying Enterprise Application Development"). I mean, the whole point of AOP is that you take software that was getting complex and tangled up, and you simplify the implementation by giving each module a single responsiblity again by introducing aspects. And then of course for some…

Using JPA in Spring without referencing Spring

Engineering | Ben Hale | August 07, 2006 | ...

Spring 2.0 has added support for the JPA data access standard with all of the standard Spring support classes one would expect. Mark Fisher has a great post on how to use this new support. However one of the questions that we keep getting is why one would want to use a Spring class (JpaTemplate) to access an EntityManager. The best answer for this question lies in the value add that JpaTemplate provides. In addition to providing the one-liner convenience methods that are a hallmark of Spring data access, it also provides automatic participation in transactions and translation from

10 Common Misconceptions About Spring

Engineering | Mark Fisher | August 04, 2006 | ...

Yesterday there were a few posts related to the forthcoming Beginning Spring 2 book, and I wanted to point those out here.

First, since this book will be of interest to those new to Spring - or even those who are simply curious at this point, we decided that it would be a good idea to include some discussion of common misconceptions about Spring. These have been posted here:
http://www.oreillynet.com/onjava/blog/2006/08/ten_common_misconceptions_abou.html
and on the Apress blog: http://ablog.apress.com/?p=1221.



Second, Interface21's Steven Devijver, the book's tireless lead author, has posted a great overview:
http://blog.interface21.com/main/2006/08/03/finishing-beginning-spring-2-from-novice-to-professional/.


The book, Beginning Spring 2: from Novice to Professional, will be in stores this October. While it aims to provide a gentle introduction appropriate for new Spring users, it will also be very useful for "filling in the gaps" even if you have been using the Spring Framework for a while. In other words, the book covers a lot of ground: the Spring container, AOP, data acess, MVC, and more. The coverage includes many new Spring 2.0 features - most notably an entire chapter exploring Spring's new and improved approach to AOP such as the XSD-based AOP namespace, integration with the AspectJ pointcut expression language, and @AspectJ integration! (Don't worry Spring 2 is backwards compatible - and the migration path is easy too). Throughout, the book provides a pragmatic balance of theory and examples. Those examples are backed by an interesting sample application (not overly simplistic). I personally was delighted when Steven asked me to contribute some exercises - yet another of his great ideas for providing an excellent resource to beginners. The first set of exercises walk through several techniques of dependency injection from basic wiring to the use of FactoryBeans and externalizing properties files. The second set of exercises are focused on AOP - including the new namespace and the @AspectJ style.

We are looking forward to an active companion site after the book's release, and of course you can continue to find many great discussions and examples of Spring 2.0 features here at the Interface21 team blog.

Finishing \"Beginning Spring 2: from Novice to Professional\"

Engineering | admin | August 03, 2006 | ...

To celebrate the launch of the new i21 team blog I take this opportunity to introduce a new Spring book that's coming up shortly. It's titled "Beginning Spring 2: from Novice to Professional" and is published by Apress. I've co-authored this book with Mark Fisher (i21), Bram Smeets (of DWR fame) and Seth Ladd (of "Expert Spring MVC and Web Flow" fame). Rob Harrop is the technical reviewer.

The book is targeted - as you might have guessed - to beginning users of the Spring Framework. Now the funny thing about Spring is that you're always a beginner in some areas. The framework offers so much…

AOP Configuration Choices in Spring 2.0

Engineering | Ben Hale | August 03, 2006 | ...

There are a lot of reasons to love working at Interface21, but by far the best has to be working with the leaders of the industry. For example, one of Spring 2.0's major focus points has been on improving AOP support. We've added a new configuration namespace, the AspectJ pointcut language and support for @AspectJ aspects. But this leaves a big question; what is the preferred way of writing Aspects in Spring 2.0? Since I'm an I21 employee, I have the luck of getting the answer straight from the horse's mouth.

I posited the question to Adrian Colyer, the Chief Scientist at Interface21 and…

Get ahead

VMware offers training and certification to turbo-charge your progress.

Learn more

Get support

Tanzu Spring Runtime offers support and binaries for OpenJDK™, Spring, and Apache Tomcat® in one simple subscription.

Learn more

Upcoming events

Check out all the upcoming events in the Spring community.

View all