diff --git a/spring-groovy/pom.xml b/spring-groovy/pom.xml
index 59c7ba4a7c..9086369fa4 100644
--- a/spring-groovy/pom.xml
+++ b/spring-groovy/pom.xml
@@ -37,5 +37,38 @@
spring-integration-groovy
4.3.7.RELEASE
+
+ org.codehaus.groovy
+ groovy-all
+ 2.4.12
+
+
+
+
+ maven-compiler-plugin
+ 3.7.0
+
+ groovy-eclipse-compiler
+ true
+ 1.8
+ 1.8
+ ${project.build.sourceEncoding}
+
+
+
+ org.codehaus.groovy
+ groovy-eclipse-compiler
+ 2.9.2-01
+
+
+ org.codehaus.groovy
+ groovy-eclipse-batch
+ 2.4.3-01
+
+
+
+
+
+
diff --git a/spring-groovy/src/main/java/com/baeldug/groovyconfig/BandsBean.java b/spring-groovy/src/main/java/com/baeldug/groovyconfig/BandsBean.java
new file mode 100644
index 0000000000..1deba5d2f6
--- /dev/null
+++ b/spring-groovy/src/main/java/com/baeldug/groovyconfig/BandsBean.java
@@ -0,0 +1,17 @@
+package com.baeldug.groovyconfig;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class BandsBean {
+
+ private List bandsList = new ArrayList<>();
+
+ public List getBandsList() {
+ return bandsList;
+ }
+
+ public void setBandsList(List bandsList) {
+ this.bandsList = bandsList;
+ }
+}
diff --git a/spring-groovy/src/main/java/com/baeldug/groovyconfig/GroovyBeanConfig.groovy b/spring-groovy/src/main/java/com/baeldug/groovyconfig/GroovyBeanConfig.groovy
new file mode 100644
index 0000000000..32a6fedff0
--- /dev/null
+++ b/spring-groovy/src/main/java/com/baeldug/groovyconfig/GroovyBeanConfig.groovy
@@ -0,0 +1,18 @@
+package com.baeldug.groovyconfig;
+
+beans {
+ javaPesronBean(JavaPersonBean) {
+ firstName = 'John'
+ lastName = 'Doe'
+ age ='32'
+ eyesColor = 'blue'
+ hairColor='black'
+ }
+
+ bandsBean(BandsBean) { bean->
+ bean.scope = "singleton"
+ bandsList=['Nirvana', 'Pearl Jam', 'Foo Fighters']
+ }
+
+ registerAlias("bandsBean","bands")
+}
diff --git a/spring-groovy/src/main/java/com/baeldug/groovyconfig/JavaBeanConfig.java b/spring-groovy/src/main/java/com/baeldug/groovyconfig/JavaBeanConfig.java
new file mode 100644
index 0000000000..7c4238ae28
--- /dev/null
+++ b/spring-groovy/src/main/java/com/baeldug/groovyconfig/JavaBeanConfig.java
@@ -0,0 +1,21 @@
+package com.baeldug.groovyconfig;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class JavaBeanConfig {
+
+ @Bean
+ public JavaPersonBean javaPerson() {
+ JavaPersonBean jPerson = new JavaPersonBean();
+ jPerson.setFirstName("John");
+ jPerson.setLastName("Doe");
+ jPerson.setAge("31");
+ jPerson.setEyesColor("green");
+ jPerson.setHairColor("blond");
+
+ return jPerson;
+ }
+
+}
diff --git a/spring-groovy/src/main/java/com/baeldug/groovyconfig/JavaPersonBean.java b/spring-groovy/src/main/java/com/baeldug/groovyconfig/JavaPersonBean.java
new file mode 100644
index 0000000000..db988d4abf
--- /dev/null
+++ b/spring-groovy/src/main/java/com/baeldug/groovyconfig/JavaPersonBean.java
@@ -0,0 +1,57 @@
+package com.baeldug.groovyconfig;
+
+public class JavaPersonBean {
+
+ public String jj;
+
+ private String firstName;
+
+ private String lastName;
+
+ private String age;
+
+ private String eyesColor;
+
+ private String hairColor;
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ public String getAge() {
+ return age;
+ }
+
+ public void setAge(String age) {
+ this.age = age;
+ }
+
+ public String getEyesColor() {
+ return eyesColor;
+ }
+
+ public void setEyesColor(String eyesColor) {
+ this.eyesColor = eyesColor;
+ }
+
+ public String getHairColor() {
+ return hairColor;
+ }
+
+ public void setHairColor(String hairColor) {
+ this.hairColor = hairColor;
+ }
+
+}
diff --git a/spring-groovy/src/main/resources/xml-bean-config.xml b/spring-groovy/src/main/resources/xml-bean-config.xml
new file mode 100644
index 0000000000..3b880bbd70
--- /dev/null
+++ b/spring-groovy/src/main/resources/xml-bean-config.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-groovy/src/test/java/com/baeldug/groovyconfig/GroovyConfigurationTest.java b/spring-groovy/src/test/java/com/baeldug/groovyconfig/GroovyConfigurationTest.java
new file mode 100644
index 0000000000..91ca6dbfe9
--- /dev/null
+++ b/spring-groovy/src/test/java/com/baeldug/groovyconfig/GroovyConfigurationTest.java
@@ -0,0 +1,50 @@
+package com.baeldug.groovyconfig;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.File;
+
+import org.junit.Test;
+import org.springframework.context.support.GenericGroovyApplicationContext;
+
+public class GroovyConfigurationTest {
+
+ private static final String FILE_NAME = "GroovyBeanConfig.groovy";
+ private static final String FILE_PATH = "src/main/java/com/baeldug/groovyconfig/";
+
+ @Test
+ public void whenGroovyConfig_thenCorrectPerson() throws Exception {
+
+ GenericGroovyApplicationContext ctx = new GenericGroovyApplicationContext();
+ ctx.load("file:" + getPathPart() + FILE_NAME);
+ ctx.refresh();
+
+ JavaPersonBean j = ctx.getBean(JavaPersonBean.class);
+
+ assertEquals("32", j.getAge());
+ assertEquals("blue", j.getEyesColor());
+ assertEquals("black", j.getHairColor());
+ }
+
+ @Test
+ public void whenGroovyConfig_thenCorrectListLength() throws Exception {
+
+ GenericGroovyApplicationContext ctx = new GenericGroovyApplicationContext();
+ ctx.load("file:" + getPathPart() + FILE_NAME);
+ ctx.refresh();
+
+ BandsBean bb = ctx.getBean(BandsBean.class);
+
+ assertEquals(3, bb.getBandsList()
+ .size());
+ }
+
+ private String getPathPart() {
+ String pathPart = new File(".").getAbsolutePath();
+ pathPart = pathPart.replace(".", "");
+ pathPart = pathPart.replace("\\", "/");
+ pathPart = pathPart + FILE_PATH;
+
+ return pathPart;
+ }
+}
diff --git a/spring-groovy/src/test/java/com/baeldug/groovyconfig/JavaConfigurationTest.java b/spring-groovy/src/test/java/com/baeldug/groovyconfig/JavaConfigurationTest.java
new file mode 100644
index 0000000000..2d9b1000ff
--- /dev/null
+++ b/spring-groovy/src/test/java/com/baeldug/groovyconfig/JavaConfigurationTest.java
@@ -0,0 +1,24 @@
+package com.baeldug.groovyconfig;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+import org.springframework.context.annotation.AnnotationConfigApplicationContext;
+
+public class JavaConfigurationTest {
+
+ @Test
+ public void whenJavaConfig_thenCorrectPerson() {
+
+ AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
+ ctx.register(JavaBeanConfig.class);
+ ctx.refresh();
+
+ JavaPersonBean j = ctx.getBean(JavaPersonBean.class);
+
+ assertEquals("31", j.getAge());
+ assertEquals("green", j.getEyesColor());
+ assertEquals("blond", j.getHairColor());
+
+ }
+}
diff --git a/spring-groovy/src/test/java/com/baeldug/groovyconfig/XmlConfigurationTest.java b/spring-groovy/src/test/java/com/baeldug/groovyconfig/XmlConfigurationTest.java
new file mode 100644
index 0000000000..3ee724207c
--- /dev/null
+++ b/spring-groovy/src/test/java/com/baeldug/groovyconfig/XmlConfigurationTest.java
@@ -0,0 +1,23 @@
+package com.baeldug.groovyconfig;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class XmlConfigurationTest {
+
+ @Test
+ public void whenXmlConfig_thenCorrectPerson() {
+ final ApplicationContext applicationContext = new ClassPathXmlApplicationContext("xml-bean-config.xml");
+
+ JavaPersonBean j = (JavaPersonBean) applicationContext.getBean("JavaPersonBean");
+
+ assertEquals("30", j.getAge());
+ assertEquals("brown", j.getEyesColor());
+ assertEquals("brown", j.getHairColor());
+
+ }
+
+}