- Swagger
Swagger是一个开源的API文档工具,用于生成API文档并提供API测试工具。Spring Boot中Swagger可以通过引入相关依赖(如springfox-swagger2和springfox-swagger-ui)来实现。接下来将详细介绍在Spring Boot中如何使用Swagger。
- 引入Swagger依赖
在pom.xml文件中加入以下依赖:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${springfox.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${springfox.version}</version>
</dependency>
- 在启动类上启用Swagger
在启动类(如Application.java)上添加如下代码:
@EnableSwagger2
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
- 编写API文档注解
在Controller中编写文档注解,如:
@ApiOperation(value = "获取用户列表", notes = "根据条件获取用户列表")
@ApiImplicitParams({
@ApiImplicitParam(name = "name", value = "用户名称", required = false, dataType = "String", paramType = "query")
})
@GetMapping("/users")
public List<User> getUsers(String name) {
// ...
}
- 编写完整的Swagger配置文件
在Spring Boot项目中如果使用了多个数据源,则需要配置Swagger的多数据源支持,可通过以下配置来实现:
@Configuration
@EnableSwagger2
@Import({JacksonConfig.class})
public class SwaggerConfig {
@Value("${application.doc.title}")
private String title;
@Value("${application.doc.description}")
private String description;
@Value("${application.doc.version}")
private String version;
@Value("${application.doc.termsOfServiceUrl}")
private String termsOfServiceUrl;
@Value("${application.doc.contactName}")
private String contactName;
@Value("${application.doc.contactUrl}")
private String contactUrl;
@Value("${application.doc.contactEmail}")
private String contactEmail;
@Value("${application.doc.license}")
private String license;
@Value("${application.doc.licenseUrl}")
private String licenseUrl;
@Bean
public Docket api1() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("数据源1")
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("xxx.xxx.xxx.controller1"))
.paths(PathSelectors.any())
.build();
}
@Bean
public Docket api2() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("数据源2")
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("xxx.xxx.xxx.controller2"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title(title)
.description(description)
.termsOfServiceUrl(termsOfServiceUrl)
.contact(new Contact(contactName, contactUrl, contactEmail))
.license(license)
.licenseUrl(licenseUrl)
.version(version)
.build();
}
}
其中,application.doc.*是在application.yml中配置的相关信息。
- 异步/定时/邮件任务
在Spring Boot中,我们可以使用Spring的TaskExecutor和TaskScheduler接口来实现异步/定时任务的功能,发送邮件则需要使用JavaMailSender进行邮件发送。
- 异步任务
在Spring Boot项目中,我们可以使用@Async注解来标记一个异步任务,@Async注解可以在方法上使用,同时还需要在启动类(如Application.java)上加上@EnableAsync注解。示例:
@Service
public class EmailService {
@Async
public void sendAsyncEmail(String to, String subject, String content) {
// 发送邮件
}
}
@SpringBootApplication
@EnableAsync
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
- 定时任务
在Spring Boot项目中,我们可以通过实现SchedulingConfigurer接口,然后重写configureTasks方法,从而实现定时任务的功能。示例:
@Configuration
@EnableScheduling
public class ScheduleConfig implements SchedulingConfigurer {
@Autowired
private TaskScheduler taskScheduler;
@Bean
public EmailTask emailTask() {
return new EmailTask();
}
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.setTaskScheduler(taskScheduler);
taskRegistrar.addTriggerTask(
emailTask(),
triggerContext -> {
CronTrigger cronTrigger = new CronTrigger("0/10 * * * * ?");
return cronTrigger.nextExecutionTime(triggerContext);
}
);
}
}
public class EmailTask implements Runnable {
@Override
public void run() {
// 发送邮件任务
}
}
- 邮件任务
在Spring Boot中,我们可以通过JavaMailSender来发送邮件。首先需要配置相关邮箱信息,如:
spring.mail.host=smtp.example.com
spring.mail.port=587
spring.mail.username=user@example.com
spring.mail.password=123456
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
然后我们可以通过配置JavaMailSender实例来发送邮件,示例:
@Service
public class EmailService {
@Autowired
private JavaMailSender javaMailSender;
public void sendEmail(String to, String subject, String content) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(to);
message.setSubject(subject);
message.setText(content);
javaMailSender.send(message);
}
}
以上是Spring Boot中Swagger、异步/定时/邮件任务的完整攻略,并提供了相关示例代码,希望对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot中swagger、异步/定时/邮件任务的问题 - Python技术站