Перед написание 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-весенний)