Spring Загрузочный достичь автоматическую сборку

       Перед написание TLV кодека библиотеки на Github неожиданного урожае некоторые из звезд, так что воспользоваться недавно холостым, просто для достижения особых комментариев автоматической сборки Весна ботинок и весна. О Spring загрузки информации автоматической сборочной линии по - прежнему довольно много, простые шаги заключаются в следующем:

1. П введение автоматической сборки зависимостей, при условии, <опции> истинно, то есть, не передается зависимость;

    <dependencies>
        ...
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

2. Для достижения XXXAutoConfiguration класса и @Configuration знаков на этикетке;

3. Если есть соответствующие атрибуты конфигурации, конфигурация может быть включена в @EnableConfigurationProperties конфигурации по классу, и установить конфигурацию префикс требует конфигурацией @ConfigurationProperties класса (в IDEA, значение по умолчанию для свойства и комментариев вводятся в application.yml при запросе):

@Configuration
@EnableConfigurationProperties(DreamTLVProperties.class)
public class DreamTLVAutoConfiguration {

    private DreamTLVProperties properties;

    public DreamTLVAutoConfiguration(DreamTLVProperties properties) {
        this.properties = properties;
    }

    @ConditionalOnMissingBean
    @Bean
    public TLVContext tlvContext() throws TLVInitException {
        return new TLVContext(properties.getBeanPackages());
    }

    @ConditionalOnMissingBean({TLVCodec.class, IHeaderCodec.class})
    @Bean("tlvCodec")
    public TLVCodec defaultTLVCodec() throws TLVInitException {
        return new TLVCodec(tlvContext());
    }

    @ConditionalOnBean(IHeaderCodec.class)
    @Bean("tlvCodec")
    public RawTLVCodec<?> customTLVCodec(IHeaderCodec<?> headerCodec) throws TLVInitException {
        return new RawTLVCodec<>(tlvContext(), headerCodec);
    }

}
@ConfigurationProperties(prefix = "dream.tlv")
public class DreamTLVProperties {

    /**
     * TLV bean packages for scanning
     */
    private String[] beanPackages;

    /**
     * @return TLV bean packages for scanning
     */
    public String[] getBeanPackages() {
        return beanPackages;
    }

    /**
     * Configure bean packages for TLVContext initialization
     *
     * @param beanPackages TLV bean packages for scanning to set
     */
    public void setBeanPackages(String[] beanPackages) {
        this.beanPackages = beanPackages;
    }
}

4. Создание ресурсов / META_INF spring.factories файла и настроить соответствующий класс автонастройки (S, разделенные запятыми, с помощью новой строки «\»):

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.dream.codec.tlv.DreamTLVAutoConfiguration

Как это простая общая процедура очень проста. Но есть много точек внимания, первый резюмировать следующим образом:

1. Необходимость гибкости в использовании @ConditionalXXX соответствующую записку, вводят или не вводят, чтобы выбрать соответствующие объекты

2. Иногда необходимо определить последовательность автоматической сборки, в это время должна быть скорректирован с помощью @AutoConfigurationBefore или сборок последовательностей @AutoConfigurationAfter, например SpringBoot хочет заменить Исполнитель проведение асинхронной пул потоков, на этот раз с непосредственным впрыском @Bean находкой не вступает в силу taskExecutor , в основном из-за весенне-загрузку автоконфигурация в TaskExecutionAutoConfiguration будет первой выполнить (нормальный порядок выполнения всех Bean при первом сканировании проекта SpringBootApplication, а затем запустить весенне-загрузочные экологические соответствующие автонастройки, после каждой третьей стороны является автоматической сборкой класс).

@EnableAsync
@AutoConfigureBefore(TaskExecutionAutoConfiguration.class)
@Configuration
@EnableConfigurationProperties(DreamFrameworkProperties.class)
public class DreamFrameworkAutoConfiguration {

    @Bean
    @ConditionalOnMissingBean(name = "taskExecutor")
    public Executor taskExecutor() {
        ...
    }
}

3. Старайтесь не использовать @ComponentScan этикетку на AutoConfiguration, хотя это более личного чувство провинциальной вещь, но все же необходимо указать, что инъекции типа может быть все включены, @ ComponentScan о сканировании @Bean, и сторонние библиотеки всегда чувствовали себя немного чрезмерными автоматизирован.

4. После вышеуказанных проблем, без использования @ComponentScan, для Bean или как @Controller @Repository специальных функций, о том, как инъекции. На самом деле, вы не хотите быть слишком сложными, или отмечены @Controller или @Repository этикетки на соответствующем классе, и, кстати, @Bean в AutoConfiguration может быть введен.

      Личная также реализовала Dream-весна-рамку , есть много автоматических рамки автоматизации сборки , чтобы сделать работу немного по умолчанию. По сравнению с традиционным способом Spring комментарий @Import для достижения определенной степени автоматической сборки, весна загрузки автоматическая настройка проще и удобнее в применении. (О @Import может также относиться к моему TLV Кодек реализации проекта TLV-весенний)

Опубликовано 42 оригинальные статьи · вона похвала 9 · просмотров 60000 +

рекомендация

отblog.csdn.net/jjxojm/article/details/104399918