提交 7d3b75d3 作者: 方治民

feat: 新增 BasicEntity、抽离 JacksonConfig 与 DateTimeConfig、优化 Swagger 日志输出时机、封装 Auths 公共类等

上级 674dce47
...@@ -3,6 +3,7 @@ package com.yiring.auth.domain.permission; ...@@ -3,6 +3,7 @@ package com.yiring.auth.domain.permission;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.yiring.common.domain.BasicEntity;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.Objects; import java.util.Objects;
...@@ -10,10 +11,9 @@ import javax.persistence.*; ...@@ -10,10 +11,9 @@ import javax.persistence.*;
import lombok.*; import lombok.*;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
import lombok.experimental.FieldNameConstants; import lombok.experimental.FieldNameConstants;
import lombok.experimental.SuperBuilder;
import org.hibernate.Hibernate; import org.hibernate.Hibernate;
import org.hibernate.annotations.Comment; import org.hibernate.annotations.Comment;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.snowflake.SnowflakeId;
/** /**
* 权限 * 权限
...@@ -25,7 +25,7 @@ import org.hibernate.snowflake.SnowflakeId; ...@@ -25,7 +25,7 @@ import org.hibernate.snowflake.SnowflakeId;
@Getter @Getter
@Setter @Setter
@ToString @ToString
@Builder @SuperBuilder(toBuilder = true)
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@FieldNameConstants @FieldNameConstants
...@@ -41,17 +41,11 @@ import org.hibernate.snowflake.SnowflakeId; ...@@ -41,17 +41,11 @@ import org.hibernate.snowflake.SnowflakeId;
@Index(columnList = "uid", unique = true), @Index(columnList = "uid", unique = true),
} }
) )
public class Permission implements Serializable { public class Permission extends BasicEntity implements Serializable {
@Serial @Serial
private static final long serialVersionUID = -2001221843529000953L; private static final long serialVersionUID = -2001221843529000953L;
@Comment("主键")
@Id
@GeneratedValue(generator = SnowflakeId.GENERATOR)
@GenericGenerator(name = SnowflakeId.GENERATOR, strategy = SnowflakeId.Strategy.LONG)
Long id;
@Comment("类型(MENU: 菜单, BUTTON: 按钮)") @Comment("类型(MENU: 菜单, BUTTON: 按钮)")
@Enumerated(EnumType.STRING) @Enumerated(EnumType.STRING)
Type type; Type type;
...@@ -140,7 +134,7 @@ public class Permission implements Serializable { ...@@ -140,7 +134,7 @@ public class Permission implements Serializable {
if (this == o) return true; if (this == o) return true;
if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false; if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false;
Permission that = (Permission) o; Permission that = (Permission) o;
return id != null && Objects.equals(id, that.id); return this.getId() != null && Objects.equals(this.getId(), that.getId());
} }
@Override @Override
......
...@@ -4,6 +4,7 @@ package com.yiring.auth.domain.role; ...@@ -4,6 +4,7 @@ package com.yiring.auth.domain.role;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.yiring.auth.domain.permission.Permission; import com.yiring.auth.domain.permission.Permission;
import com.yiring.auth.domain.user.User; import com.yiring.auth.domain.user.User;
import com.yiring.common.domain.BasicEntity;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.HashSet; import java.util.HashSet;
...@@ -13,10 +14,9 @@ import javax.persistence.*; ...@@ -13,10 +14,9 @@ import javax.persistence.*;
import lombok.*; import lombok.*;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
import lombok.experimental.FieldNameConstants; import lombok.experimental.FieldNameConstants;
import lombok.experimental.SuperBuilder;
import org.hibernate.Hibernate; import org.hibernate.Hibernate;
import org.hibernate.annotations.Comment; import org.hibernate.annotations.Comment;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.snowflake.SnowflakeId;
/** /**
* 角色 * 角色
...@@ -28,7 +28,7 @@ import org.hibernate.snowflake.SnowflakeId; ...@@ -28,7 +28,7 @@ import org.hibernate.snowflake.SnowflakeId;
@Getter @Getter
@Setter @Setter
@ToString @ToString
@Builder @SuperBuilder(toBuilder = true)
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@FieldNameConstants @FieldNameConstants
...@@ -36,17 +36,11 @@ import org.hibernate.snowflake.SnowflakeId; ...@@ -36,17 +36,11 @@ import org.hibernate.snowflake.SnowflakeId;
@Entity @Entity
@Comment("系统角色") @Comment("系统角色")
@Table(name = "SYS_ROLE", indexes = { @Index(columnList = "uid", unique = true) }) @Table(name = "SYS_ROLE", indexes = { @Index(columnList = "uid", unique = true) })
public class Role implements Serializable { public class Role extends BasicEntity implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 910404402503275957L; private static final long serialVersionUID = 910404402503275957L;
@Comment("主键")
@Id
@GeneratedValue(generator = SnowflakeId.GENERATOR)
@GenericGenerator(name = SnowflakeId.GENERATOR, strategy = SnowflakeId.Strategy.LONG)
Long id;
@Comment("标识") @Comment("标识")
@Column(unique = true, nullable = false) @Column(unique = true, nullable = false)
String uid; String uid;
...@@ -59,7 +53,7 @@ public class Role implements Serializable { ...@@ -59,7 +53,7 @@ public class Role implements Serializable {
@Comment("权限集合") @Comment("权限集合")
@ManyToMany @ManyToMany
@ToString.Exclude @ToString.Exclude
private Set<Permission> permissions = new HashSet<>(); Set<Permission> permissions = new HashSet<>();
@JsonIgnore @JsonIgnore
@EqualsAndHashCode.Exclude @EqualsAndHashCode.Exclude
...@@ -72,14 +66,14 @@ public class Role implements Serializable { ...@@ -72,14 +66,14 @@ public class Role implements Serializable {
joinColumns = { @JoinColumn(name = "role_id") }, joinColumns = { @JoinColumn(name = "role_id") },
inverseJoinColumns = { @JoinColumn(name = "user_id") } inverseJoinColumns = { @JoinColumn(name = "user_id") }
) )
private Set<User> users = new HashSet<>(); Set<User> users = new HashSet<>();
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
if (this == o) return true; if (this == o) return true;
if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false; if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false;
Role role = (Role) o; Role role = (Role) o;
return id != null && Objects.equals(id, role.id); return this.getId() != null && Objects.equals(this.getId(), role.getId());
} }
@Override @Override
......
...@@ -3,6 +3,7 @@ package com.yiring.auth.domain.user; ...@@ -3,6 +3,7 @@ package com.yiring.auth.domain.user;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.yiring.auth.domain.role.Role; import com.yiring.auth.domain.role.Role;
import com.yiring.common.domain.BasicEntity;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;
...@@ -13,10 +14,9 @@ import javax.persistence.*; ...@@ -13,10 +14,9 @@ import javax.persistence.*;
import lombok.*; import lombok.*;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
import lombok.experimental.FieldNameConstants; import lombok.experimental.FieldNameConstants;
import lombok.experimental.SuperBuilder;
import org.hibernate.Hibernate; import org.hibernate.Hibernate;
import org.hibernate.annotations.Comment; import org.hibernate.annotations.Comment;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.snowflake.SnowflakeId;
/** /**
* 用户 * 用户
...@@ -28,7 +28,7 @@ import org.hibernate.snowflake.SnowflakeId; ...@@ -28,7 +28,7 @@ import org.hibernate.snowflake.SnowflakeId;
@Getter @Getter
@Setter @Setter
@ToString @ToString
@Builder @SuperBuilder(toBuilder = true)
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@FieldNameConstants @FieldNameConstants
...@@ -45,17 +45,11 @@ import org.hibernate.snowflake.SnowflakeId; ...@@ -45,17 +45,11 @@ import org.hibernate.snowflake.SnowflakeId;
} }
) )
@Comment("系统用户") @Comment("系统用户")
public class User implements Serializable { public class User extends BasicEntity implements Serializable {
@Serial @Serial
private static final long serialVersionUID = -5787847701210907511L; private static final long serialVersionUID = -5787847701210907511L;
@Comment("主键")
@Id
@GeneratedValue(generator = SnowflakeId.GENERATOR)
@GenericGenerator(name = SnowflakeId.GENERATOR, strategy = SnowflakeId.Strategy.LONG)
Long id;
@Comment("真实姓名") @Comment("真实姓名")
String realName; String realName;
...@@ -103,15 +97,12 @@ public class User implements Serializable { ...@@ -103,15 +97,12 @@ public class User implements Serializable {
@Comment("最后登录时间") @Comment("最后登录时间")
LocalDateTime lastLoginTime; LocalDateTime lastLoginTime;
@Comment("创建时间")
LocalDateTime createTime;
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
if (this == o) return true; if (this == o) return true;
if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false; if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false;
User user = (User) o; User user = (User) o;
return id != null && Objects.equals(id, user.id); return this.getId() != null && Objects.equals(this.getId(), user.getId());
} }
@Override @Override
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.auth.util;
import cn.dev33.satoken.exception.NotLoginException;
import cn.dev33.satoken.stp.StpUtil;
import com.yiring.auth.domain.user.User;
import com.yiring.auth.domain.user.UserRepository;
import com.yiring.common.core.Status;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Resource;
import lombok.NonNull;
import org.springframework.stereotype.Component;
/**
* 认证工具类
*
* @author Jim
* @version 0.1
* 2022/4/8 17:34
*/
@SuppressWarnings("unused")
@Component
public class Auths {
@Resource
UserRepository userRepository;
/**
* 根据 Token 获取用户信息
* 如果用户未登录或校验失败会抛出 NotLoginException {@link Status#UNAUTHORIZED}
* @param token token
* @return 用户信息
*/
public User getUserByToken(@NonNull String token) {
Object id = StpUtil.getLoginIdByToken(token);
if (id == null) {
StpUtil.logoutByTokenValue(token);
throw NotLoginException.newInstance(StpUtil.TYPE, null);
}
Optional<User> optional = userRepository.findById(Long.valueOf(Objects.toString(id)));
if (optional.isEmpty()) {
StpUtil.logout(id);
throw NotLoginException.newInstance(StpUtil.TYPE, NotLoginException.INVALID_TOKEN);
}
return optional.get();
}
/**
* 获取当前登录用户
* 如果用户未登录会抛出 NotLoginException {@link Status#UNAUTHORIZED}
*/
public User getLoginUser() {
String token = StpUtil.getTokenValue();
if (token == null) {
throw NotLoginException.newInstance(StpUtil.TYPE, null);
}
return getUserByToken(token);
}
}
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.auth.web.user; package com.yiring.auth.web.user;
import cn.dev33.satoken.stp.StpUtil;
import com.yiring.auth.domain.permission.Permission; import com.yiring.auth.domain.permission.Permission;
import com.yiring.auth.domain.role.Role; import com.yiring.auth.domain.role.Role;
import com.yiring.auth.domain.role.RoleRepository; import com.yiring.auth.domain.role.RoleRepository;
import com.yiring.auth.domain.user.User; import com.yiring.auth.domain.user.User;
import com.yiring.auth.domain.user.UserRepository; import com.yiring.auth.domain.user.UserRepository;
import com.yiring.auth.param.IdsParam; import com.yiring.auth.param.IdsParam;
import com.yiring.auth.util.Auths;
import com.yiring.auth.util.Permissions; import com.yiring.auth.util.Permissions;
import com.yiring.auth.vo.permission.MenuVo; import com.yiring.auth.vo.permission.MenuVo;
import com.yiring.auth.vo.user.UserInfoVo; import com.yiring.auth.vo.user.UserInfoVo;
import com.yiring.auth.vo.user.UserVo; import com.yiring.auth.vo.user.UserVo;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.core.Status; import com.yiring.common.core.Status;
import com.yiring.common.exception.FailStatusException;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
import com.yiring.common.param.PageParam; import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
...@@ -52,6 +51,9 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -52,6 +51,9 @@ import org.springframework.web.bind.annotation.RestController;
public class UserController { public class UserController {
@Resource @Resource
Auths auths;
@Resource
UserRepository userRepository; UserRepository userRepository;
@Resource @Resource
...@@ -60,7 +62,7 @@ public class UserController { ...@@ -60,7 +62,7 @@ public class UserController {
@ApiOperation(value = "获取登录用户信息") @ApiOperation(value = "获取登录用户信息")
@GetMapping("getUserInfo") @GetMapping("getUserInfo")
public Result<UserInfoVo> getUserInfo() { public Result<UserInfoVo> getUserInfo() {
User user = getLoginUser(); User user = auths.getLoginUser();
UserInfoVo userInfoVo = UserInfoVo UserInfoVo userInfoVo = UserInfoVo
.builder() .builder()
.userId(user.getId()) .userId(user.getId())
...@@ -76,7 +78,7 @@ public class UserController { ...@@ -76,7 +78,7 @@ public class UserController {
@ApiOperation(value = "获取用户菜单") @ApiOperation(value = "获取用户菜单")
@GetMapping("getMenuList") @GetMapping("getMenuList")
public Result<ArrayList<MenuVo>> getMenuList() { public Result<ArrayList<MenuVo>> getMenuList() {
User user = getLoginUser(); User user = auths.getLoginUser();
List<Permission> permissions = Permissions List<Permission> permissions = Permissions
.toPermissions(user.getRoles()) .toPermissions(user.getRoles())
.stream() .stream()
...@@ -89,7 +91,7 @@ public class UserController { ...@@ -89,7 +91,7 @@ public class UserController {
@ApiOperation(value = "获取用户权限") @ApiOperation(value = "获取用户权限")
@GetMapping("getPermCode") @GetMapping("getPermCode")
public Result<ArrayList<String>> getPermCode() { public Result<ArrayList<String>> getPermCode() {
User user = getLoginUser(); User user = auths.getLoginUser();
List<Permission> permissions = Permissions.toPermissions(user.getRoles()); List<Permission> permissions = Permissions.toPermissions(user.getRoles());
List<String> codes = permissions.stream().map(Permission::getUid).collect(Collectors.toList()); List<String> codes = permissions.stream().map(Permission::getUid).collect(Collectors.toList());
return Result.ok((ArrayList<String>) codes); return Result.ok((ArrayList<String>) codes);
...@@ -132,19 +134,4 @@ public class UserController { ...@@ -132,19 +134,4 @@ public class UserController {
PageVo<UserVo> vo = PageVo.build(data, page.getTotalElements()); PageVo<UserVo> vo = PageVo.build(data, page.getTotalElements());
return Result.ok(vo); return Result.ok(vo);
} }
/**
* 获取登录用户信息
* @return 用户信息
*/
private User getLoginUser() {
Long id = StpUtil.getLoginIdAsLong();
Optional<User> optional = userRepository.findById(id);
if (optional.isPresent()) {
return optional.get();
}
StpUtil.logout(id);
throw new FailStatusException(Status.UNAUTHORIZED);
}
} }
...@@ -6,6 +6,9 @@ dependencies { ...@@ -6,6 +6,9 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
// 本地依赖
implementation fileTree(dir: project.rootDir.getPath() + '\\libs', includes: ['*jar'])
// swagger annotations // swagger annotations
implementation "io.swagger:swagger-annotations:${swaggerAnnotationsVersion}" implementation "io.swagger:swagger-annotations:${swaggerAnnotationsVersion}"
......
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.common.config; package com.yiring.common.config;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer; import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
...@@ -28,8 +26,8 @@ import org.springframework.core.convert.converter.Converter; ...@@ -28,8 +26,8 @@ import org.springframework.core.convert.converter.Converter;
@Configuration @Configuration
public class DateTimeConfig { public class DateTimeConfig {
@Bean(name = "mapperObject") @Bean
public ObjectMapper getObjectMapper() { public JavaTimeModule javaTimeModule() {
JavaTimeModule timeModule = new JavaTimeModule(); JavaTimeModule timeModule = new JavaTimeModule();
timeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateFormatter.DATE_TIME)); timeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateFormatter.DATE_TIME));
timeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateFormatter.DATE)); timeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateFormatter.DATE));
...@@ -37,9 +35,7 @@ public class DateTimeConfig { ...@@ -37,9 +35,7 @@ public class DateTimeConfig {
timeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateFormatter.DATE_TIME)); timeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateFormatter.DATE_TIME));
timeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateFormatter.DATE)); timeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateFormatter.DATE));
timeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateFormatter.TIME)); timeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateFormatter.TIME));
// feat: add AdminServerModule return timeModule;
// .setSerializationInclusion(JsonInclude.Include.NON_NULL)
return new ObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_NULL).registerModules(timeModule);
} }
@Bean @Bean
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.common.config;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import javax.annotation.Resource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* Jackson Config
*
* @author Jim
* @version 0.1
* 2022/4/17 16:54
*/
@Configuration
public class JacksonConfig {
@Resource
JavaTimeModule javaTimeModule;
@Bean
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
mapper.registerModule(javaTimeModule);
// feat: add AdminServerModule
return mapper;
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.common.domain;
import java.time.LocalDateTime;
import java.util.Objects;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import lombok.*;
import lombok.experimental.FieldDefaults;
import lombok.experimental.FieldNameConstants;
import lombok.experimental.SuperBuilder;
import org.hibernate.Hibernate;
import org.hibernate.annotations.Comment;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.UpdateTimestamp;
import org.hibernate.snowflake.SnowflakeId;
/**
* 基础表抽象类
*
* @author Jim
* @version 0.1
* 2022/4/17 12:11
*/
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
@FieldDefaults(level = AccessLevel.PRIVATE)
@SuperBuilder(toBuilder = true)
@MappedSuperclass
public abstract class BasicEntity {
@Comment("主键")
@Id
@GeneratedValue(generator = SnowflakeId.GENERATOR)
@GenericGenerator(name = SnowflakeId.GENERATOR, strategy = SnowflakeId.Strategy.LONG)
Long id;
@Comment("创建时间")
@Column(nullable = false)
@CreationTimestamp
LocalDateTime createTime;
@Comment("最后修改时间")
@Column(nullable = false)
@UpdateTimestamp
LocalDateTime updateTime;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false;
BasicEntity that = (BasicEntity) o;
return id != null && Objects.equals(id, that.id);
}
@Override
public int hashCode() {
return getClass().hashCode();
}
}
...@@ -11,6 +11,7 @@ import java.util.stream.Collectors; ...@@ -11,6 +11,7 @@ import java.util.stream.Collectors;
import javax.annotation.Resource; import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Import;
...@@ -41,7 +42,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc; ...@@ -41,7 +42,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
@EnableSwagger2WebMvc @EnableSwagger2WebMvc
@Configuration @Configuration
@Import(BeanValidatorPluginsConfiguration.class) @Import(BeanValidatorPluginsConfiguration.class)
public class SwaggerConfig { public class SwaggerConfig implements CommandLineRunner {
@Value("${spring.application.name}") @Value("${spring.application.name}")
String applicationName; String applicationName;
...@@ -61,8 +62,6 @@ public class SwaggerConfig { ...@@ -61,8 +62,6 @@ public class SwaggerConfig {
} }
private Docket api(Predicate<String> paths) { private Docket api(Predicate<String> paths) {
log.info("API Doc: http://localhost:{}{}/doc.html", port, path);
String group = "default"; String group = "default";
return new Docket(DocumentationType.SWAGGER_2) return new Docket(DocumentationType.SWAGGER_2)
.groupName(group) .groupName(group)
...@@ -99,4 +98,9 @@ public class SwaggerConfig { ...@@ -99,4 +98,9 @@ public class SwaggerConfig {
.map(status -> new ResponseMessageBuilder().code(status.value()).message(status.getReasonPhrase()).build()) .map(status -> new ResponseMessageBuilder().code(status.value()).message(status.getReasonPhrase()).build())
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
@Override
public void run(String... args) {
log.info("API Doc: http://localhost:{}{}/doc.html", port, path);
}
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论