1. Обзор
В этой быстрой статье мы сосредоточимся на том, как мы можем использовать конфигурацию на основе Groovy в наших проектах Java Spring.
2. Зависимости
Прежде чем мы начнем, нам нужно добавить зависимость в наш файл pom.xml
. Нам также нужно добавить плагин для компиляции наших файлов Groovy.
Давайте сначала добавим зависимость для Groovy в наш файл pom.xml
:
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy</artifactId>
<version>2.5.10</version>
</dependency>
Теперь добавим плагин:
<build>
<plugins>
//...
<plugin>
<groupId>org.codehaus.gmavenplus</groupId>
<artifactId>gmavenplus-plugin</artifactId>
<version>1.9.0</version>
<executions>
<execution>
<goals>
<goal>addSources</goal>
<goal>addTestSources</goal>
<goal>generateStubs</goal>
<goal>compile</goal>
<goal>generateTestStubs</goal>
<goal>compileTests</goal>
<goal>removeStubs</goal>
<goal>removeTestStubs</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Здесь мы используем gmavenplus-plugin со всеми целями .
Последние версии этих библиотек можно найти на Maven Central .
3. Определение бинов
Начиная с версии 4, Spring обеспечивает поддержку конфигураций на основе Groovy. Это означает, что классы Groovy могут быть законными компонентами Spring.
Чтобы проиллюстрировать это, мы собираемся определить bean-компонент, используя стандартную конфигурацию Java, а затем мы собираемся настроить тот же bean-компонент, используя Groovy. Таким образом, мы сможем увидеть разницу.
Давайте создадим простой класс с несколькими свойствами:
public class JavaPersonBean {
private String firstName;
private String lastName;
// standard getters and setters
}
Важно помнить о геттерах/сеттерах — они имеют решающее значение для работы механизма.
3.1. Конфигурация Java
Мы можем настроить тот же компонент, используя конфигурацию на основе Java:
@Configuration
public class JavaBeanConfig {
@Bean
public JavaPersonBean javaPerson() {
JavaPersonBean jPerson = new JavaPersonBean();
jPerson.setFirstName("John");
jPerson.setLastName("Doe");
return jPerson;
}
}
3.2. Groovy-конфигурация
Теперь мы можем увидеть разницу, когда используем Groovy для настройки ранее созданного bean-компонента:
beans {
javaPersonBean(JavaPersonBean) {
firstName = 'John'
lastName = 'Doe'
}
}
Обратите внимание, что перед определением конфигурации bean-компонентов мы должны импортировать класс JavaPersonBean.
Кроме того, внутри блока bean
-компонентов мы можем определить столько bean-компонентов, сколько нам нужно.
Мы определили наши поля как приватные, и хотя Groovy делает вид, что обращается к ним напрямую, он делает это с помощью предоставленных геттеров/сеттеров.
4. Дополнительные настройки компонентов
Как и в конфигурации на основе XML и Java, мы можем настраивать не только bean-компоненты.
Если нам нужно установить псевдоним
для нашего компонента, мы можем сделать это легко:
registerAlias("bandsBean","bands")
Если мы хотим определить область действия компонента :
{
bean ->
bean.scope = "prototype"
}
Чтобы добавить обратные вызовы жизненного цикла для нашего компонента, мы можем сделать:
{
bean ->
bean.initMethod = "someInitMethod"
bean.destroyMethod = "someDestroyMethod"
}
Мы также можем указать наследование в определении bean-компонента:
{
bean->
bean.parent="someBean"
}
Наконец, если нам нужно импортировать некоторые ранее определенные bean-компоненты из конфигурации XML, мы можем сделать это с помощью importBeans():
importBeans("somexmlconfig.xml")
5. Вывод
В этом руководстве мы увидели, как создавать конфигурации bean-компонентов Spring Groovy. Мы также рассмотрели настройку дополнительных свойств наших компонентов, таких как их псевдонимы, области действия, родительские элементы, методы инициализации или уничтожения, а также способы импорта других компонентов, определенных XML.
Хотя примеры просты, их можно расширить и использовать для создания любого типа конфигурации Spring.
Полный пример кода, который используется в этой статье, можно найти в нашем проекте на GitHub . Это проект Maven, поэтому вы должны иметь возможность импортировать его и запускать как есть.