ClaimantServiceApplication.java
package uk.gov.dhsc.htbhf.claimant;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.event.EventListener;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import uk.gov.dhsc.htbhf.CommonRestConfiguration;
import uk.gov.dhsc.htbhf.claimant.message.MessageProcessorConfiguration;
import uk.gov.dhsc.htbhf.database.CloudDBConfiguration;
import uk.gov.dhsc.htbhf.logging.EventLogger;
import uk.gov.dhsc.htbhf.logging.LoggingConfiguration;
import uk.gov.dhsc.htbhf.logging.event.ApplicationStartedEvent;
import java.time.Clock;
/**
* The starting point for spring boot, this class enables SpringFox for documenting the api using swagger
* and defines a number of beans.
* See also: {@link ApiDocumentation}.
*/
@SpringBootApplication
@EnableSwagger2
@Configuration
@Import({CommonRestConfiguration.class, LoggingConfiguration.class, MessageProcessorConfiguration.class, CloudDBConfiguration.class})
public class ClaimantServiceApplication {
@Value("${app.version:}") // use APP_VERSION env variable if available, otherwise give no version info
private String appVersion;
@Value("${instance.index:}") // use INSTANCE_INDEX env variable if available, otherwise give no index info
private String instanceIndex;
@Value("${vcap.application.application_id:}") // the id of the application as provided by cf
private String applicationId;
@Autowired
private EventLogger eventLogger;
@Bean
public Clock clock() {
return Clock.systemDefaultZone();
}
@EventListener(ApplicationReadyEvent.class)
public void logAfterStartup() {
eventLogger.logEvent(ApplicationStartedEvent.builder()
.applicationId(applicationId)
.applicationVersion(appVersion)
.instanceIndex(instanceIndex)
.build()
);
}
public static void main(String[] args) {
SpringApplication.run(ClaimantServiceApplication.class, args);
}
}