
Spring Boot - Starter
2021, Oct 26
Hướng dẫn viết một library Spring Boot Starter
A Starter project
- Project bao gồm 3 class chính:
- Class SampleProperties: chưa các variable được load từ file config application.yml
- Class SampleService: sample service cần sử dụng
- Class SampleAutoConfiguration: thực hiện việc auto-configuration
- Class SampleProperties
@Getter
@Setter
@ConfigurationProperties("sample-code")
public class SampleProperties {
public boolean active;
public String value;
}
Giá trị được lấy từ config sau thuộc tính sample-code
- Class SampleService
public class SampleServiceImpl implements SampleService {
private SampleProperties sampleProperties;
public SampleServiceImpl(SampleProperties sampleProperties) {
this.sampleProperties = sampleProperties;
}
@Override
public void doSample() {
System.out.println("Do sample: " + sampleProperties.value);
}
}
- Class SampleAutoConfiguration thực hiện các việc
- Chỉ chạy auto khi thuộc tính sample-code.active=true
- Load config theo class SampleProperties
- Tự động tạo bean của class SampleService
@Configuration
@ConditionalOnProperty(name = "active", prefix = "sample-code", havingValue = "true")
@EnableConfigurationProperties(SampleProperties.class)
public class SampleAutoConfiguration {
@ConditionalOnMissingBean
@Bean
SampleService sampleService(SampleProperties sampleProperties) {
return new SampleServiceImpl(sampleProperties);
}
}
- Thêm file spring.factories bên dưới thư mục src/main/resouces/META-INF
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
io.codebyexample.springbootstarter.autoconfiguration.SampleAutoConfiguration
Write a sample
- Thêm config trong file application.yml
sample-code:
active: true
value: Sample Value
- Lấy bean SampleService để sử dụng
@SpringBootApplication
public class Application {
@Autowired
SampleService sampleService;
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@EventListener(ApplicationReadyEvent.class)
public void ready() {
sampleService.doSample();
}
}
Source code ở đây