[[cli.groovy-beans-dsl]]
== Developing Applications with the Groovy Beans DSL
Spring Framework 4.0 has native support for a `beans{}` "`DSL`" (borrowed from https://grails.org/[Grails]), and you can embed bean definitions in your Groovy application scripts by using the same format.
This is sometimes a good way to include external features like middleware declarations, as shown in the following example:

[source,groovy,pending-extract=true,indent=0,subs="verbatim"]
----
	@Configuration(proxyBeanMethods = false)
	class Application implements CommandLineRunner {

		@Autowired
		SharedService service

		@Override
		void run(String... args) {
			println service.message
		}

	}

	import my.company.SharedService

	beans {
		service(SharedService) {
			message = "Hello World"
		}
	}
----

You can mix class declarations with `beans{}` in the same file as long as they stay at the top level, or, if you prefer, you can put the beans DSL in a separate file.
