diff --git a/spring-beans-groovy/src/main/java/org/springframework/beans/factory/groovy/GroovyBeanDefinitionReader.java b/spring-beans-groovy/src/main/java/org/springframework/beans/factory/groovy/GroovyBeanDefinitionReader.java index 6e421c6f4b..534f80cd94 100644 --- a/spring-beans-groovy/src/main/java/org/springframework/beans/factory/groovy/GroovyBeanDefinitionReader.java +++ b/spring-beans-groovy/src/main/java/org/springframework/beans/factory/groovy/GroovyBeanDefinitionReader.java @@ -56,10 +56,11 @@ import org.springframework.core.io.support.EncodedResource; import org.springframework.core.io.support.ResourcePatternUtils; /** - * A Groovy-based reader for Spring bean definitions: Like a Groovy builder, + * A Groovy-based reader for Spring bean definitions: like a Groovy builder, * but more of a DSL for Spring configuration. Allows syntax like: * - *
import org.hibernate.SessionFactory + *+ * import org.hibernate.SessionFactory * import org.apache.commons.dbcp.BasicDataSource * * def reader = new GroovyBeanDefinitionReader(myApplicationContext) @@ -81,11 +82,12 @@ import org.springframework.core.io.support.ResourcePatternUtils; * } * }* - *You can also load resources containing beans defined as a Groovy script using + *
You can also load resources containing beans defined in a Groovy script using * either the {@link #loadBeanDefinitions(org.springframework.core.io.Resource...)} * or {@link #loadBeanDefinitions(String...)} method, with a script looking as follows: * - *
import org.hibernate.SessionFactory + *+ * import org.hibernate.SessionFactory * import org.apache.commons.dbcp.BasicDataSource * * beans { @@ -257,10 +259,10 @@ public class GroovyBeanDefinitionReader extends AbstractBeanDefinitionReader imp } /** - * Defines an inner bean definition - * @param type The bean type - * @param args The constructors arguments and closure configurer - * @return The bean definition + * Define an inner bean definition. + * @param type the bean type + * @param args the constructors arguments and closure configurer + * @return the bean definition */ public AbstractBeanDefinition bean(Class> type, Object...args) { GroovyBeanDefinitionWrapper current = this.currentBeanDefinition; @@ -292,7 +294,7 @@ public class GroovyBeanDefinitionReader extends AbstractBeanDefinitionReader imp } /** - * Defines an Spring namespace definition to use. + * Define a Spring namespace definition to use. * @param definition the namespace definition */ public void xmlns(Mapdefinition) { @@ -314,7 +316,8 @@ public class GroovyBeanDefinitionReader extends AbstractBeanDefinitionReader imp } /** - * Imports Spring bean definitions from either XML or Groovy sources into the current bean builder instance. + * Import Spring bean definitions from either XML or Groovy sources into the + * current bean builder instance. * @param resourcePattern the resource pattern */ public void importBeans(String resourcePattern) throws IOException { @@ -336,7 +339,7 @@ public class GroovyBeanDefinitionReader extends AbstractBeanDefinitionReader imp /** * This method overrides method invocation to create beans for each method name that - * takes a class argument + * takes a class argument. */ public Object invokeMethod(String name, Object arg) { Object[] args = (Object[])arg; @@ -411,7 +414,7 @@ public class GroovyBeanDefinitionReader extends AbstractBeanDefinitionReader imp } /** - * When an methods argument is only a closure it is a set of bean definitions. + * When a method argument is only a closure it is a set of bean definitions. * @param callable the closure argument * @return this GroovyBeanDefinitionReader instance */ @@ -528,7 +531,7 @@ public class GroovyBeanDefinitionReader extends AbstractBeanDefinitionReader imp } /** - * Checks whether there are any {@link RuntimeBeanReference} inside the Map + * Checks whether there are any {@link RuntimeBeanReference}s inside the Map * and converts it to a ManagedMap if necessary. * @param map the original Map * @return either the original map or a managed copy of it @@ -550,8 +553,8 @@ public class GroovyBeanDefinitionReader extends AbstractBeanDefinitionReader imp } /** - * Checks whether there are any {@link RuntimeBeanReference} inside the Lis - * and converts it to a ManagedList if necessary. + * Checks whether there are any {@link RuntimeBeanReference}s inside the List + * and converts it to a ManagedList if necessary. * @param list the original List * @return either the original list or a managed copy of it */ @@ -612,10 +615,14 @@ public class GroovyBeanDefinitionReader extends AbstractBeanDefinitionReader imp } /** - * This method overrides property retrieval in the scope of the GroovyBeanDefinitionReader to either: - * a) Retrieve a variable from the bean builder's binding if it exists - * b) Retrieve a RuntimeBeanReference for a specific bean if it exists - * c) Otherwise just delegate to MetaClass.getProperty which will resolve properties from the GroovyBeanDefinitionReader itself + * This method overrides property retrieval in the scope of the + * GroovyBeanDefinitionReader to either: + * + *
*/ public Object getProperty(String name) { Binding binding = getBinding(); @@ -678,9 +685,10 @@ public class GroovyBeanDefinitionReader extends AbstractBeanDefinitionReader imp /** - * This class is used to defer the adding of a property to a bean definition until later - * This is for a case where you assign a property to a list that may not contain bean references at - * that point of assignment, but may later hence it would need to be managed + * This class is used to defer the adding of a property to a bean definition + * until later. This is for a case where you assign a property to a list that + * may not contain bean references at that point of assignment, but may later; + * hence, it would need to be managed. */ private static class DeferredProperty { @@ -703,7 +711,7 @@ public class GroovyBeanDefinitionReader extends AbstractBeanDefinitionReader imp /** - * A RuntimeBeanReference that takes care of adding new properties to runtime references + * A RuntimeBeanReference that takes care of adding new properties to runtime references. */ private class GroovyRuntimeBeanReference extends RuntimeBeanReference implements GroovyObject { diff --git a/spring-context/src/main/java/org/springframework/context/support/GenericGroovyApplicationContext.java b/spring-context/src/main/java/org/springframework/context/support/GenericGroovyApplicationContext.java index 157892feb8..ba54a71a49 100644 --- a/spring-context/src/main/java/org/springframework/context/support/GenericGroovyApplicationContext.java +++ b/spring-context/src/main/java/org/springframework/context/support/GenericGroovyApplicationContext.java @@ -36,9 +36,10 @@ import org.springframework.core.io.Resource; * *- Retrieve a variable from the bean builder's binding if it exists + *
- Retrieve a RuntimeBeanReference for a specific bean if it exists + *
- Otherwise just delegate to MetaClass.getProperty which will resolve + * properties from the GroovyBeanDefinitionReader itself + *
Consider this as the equivalent of {@link GenericXmlApplicationContext} for * Groovy bean definitions. The main difference is that, within a Groovy script, - * the context can be used with an inline bean definition closure like as follows: + * the context can be used with an inline bean definition closure as follows: * - *
import org.hibernate.SessionFactory + ** *+ * import org.hibernate.SessionFactory * import org.apache.commons.dbcp.BasicDataSource * * def context = new GenericGroovyApplicationContext() @@ -59,12 +60,14 @@ import org.springframework.core.io.Resource; * } * } * } - * context.refresh()+ * context.refresh() + *Alternatively, load a Groovy bean definition script like the following * from an external resource (e.g. an "applicationContext.groovy" file): * - *
import org.hibernate.SessionFactory + ** *+ * import org.hibernate.SessionFactory * import org.apache.commons.dbcp.BasicDataSource * * beans { @@ -83,18 +86,23 @@ import org.springframework.core.io.Resource; * dataSource = dataSource * } * } - * }+ * } + *With the following Java code creating the {@code GenericGroovyApplicationContext} * (potentially using Ant-style '*'/'**' location patterns): * - *
GenericGroovyApplicationContext context = new GenericGroovyApplicationContext(); + ** *+ * GenericGroovyApplicationContext context = new GenericGroovyApplicationContext(); * context.load("org/myapp/applicationContext.groovy"); - * context.refresh();+ * context.refresh(); + *Or even more concise, provided that no extra configuration is needed: * - *
ApplicationContext context = new GenericGroovyApplicationContext("org/myapp/applicationContext.groovy");+ *+ * ApplicationContext context = new GenericGroovyApplicationContext("org/myapp/applicationContext.groovy"); + ** * @author Juergen Hoeller * @author Jeff Brown