跳到主要内容

自定义动作

您可以通过设置->工具->AutoDev来自定义您的提示模板

{
"spec": {
"controller": "- 在Controller中使用BeanUtils.copyProperties进行DTO到Entity的转换\n- 避免使用Autowired\n- 使用Swagger注解说明API含义\n- Controller方法应捕获并处理业务异常,而不是抛出系统异常",
"service": "- Service层应使用构造器注入或setter注入;避免使用@Autowired注解",
"entity": "- 实体类应使用JPA注解进行数据库映射\n- 实体类名应与对应数据库表名匹配。实体类应使用注解标记主键和表名,例如:@Id、@GeneratedValue、@Table等",
"repository": "- Repository接口应继承JpaRepository接口以继承基础CRUD操作",
"ddl": "- 字段应添加NOT NULL约束以确保数据完整性"
},
"prompts": [
{
"title": "代码补全",
"autoInvoke": true,
"matchRegex": ".*",
"priority": 1,
"template": "代码补全:\n${METHOD_INPUT_OUTPUT}\n${SPEC_controller}\n\n${SELECTION}"
},
{
"title": "转换为Kotlin",
"autoInvoke": false,
"matchRegex": ".*",
"priority": 0,
"template": "将以下代码转换为Kotlin\n${SIMILAR_CHUNK}\n对比代码片段:\n${METHOD_INPUT_OUTPUT}\n以下是代码:\n${SELECTION}"
}
]
}
  • title: 动作名称
  • autoInvoke: 执行动作时是否自动调用
  • matchRegex: TODO()
  • priority: 动作优先级,数值越高优先级越高(建议范围0~1000)
  • template: 动作模板,可使用${SPEC_controller}插入规范说明,${SELECTION}插入选中代码
  • selectedRegex (自@1.8.3版本起,来自#174): 匹配选中代码的正则表达式

变量说明

上下文变量:

  • ${SELECTION}: 选中的代码片段
  • ${SIMILAR_CHUNK}: 相似代码块
  • ${METHOD_INPUT_OUTPUT}: 方法输入输出说明

规范变量:

  • ${SPEC_*}: 从配置的spec部分加载规范,例如${SPEC_controller}会加载配置中的spec.controller

模板示例

配置:

{
"title": "\uD83C\uDF10\uD83C\uDF10 转换为Kotlin",
"autoInvoke": false,
"matchRegex": ".*",
"priority": 0,
"template": "将以下代码转换为Kotlin。相似代码块:${SIMILAR_CHUNK} 对比代码片段:${METHOD_INPUT_OUTPUT}\n \n${SELECTION}"
}

输出示例:

将以下代码转换为Kotlin。相似代码块: // 对比来自java/cc/unitmesh/untitled/demo/controller/CommentController.java的代码片段:
// public class CommentController {
// 对比来自java/cc/unitmesh/untitled/demo/DemoApplication.java的代码片段:
// public class DemoApplication {
// 对比来自java/cc/unitmesh/untitled/demo/controller/AdvertiseController.java的代码片段:
// public class AdvertiseController {
// 对比来自java/cc/unitmesh/untitled/demo/dto/BookMeetingRoomRequest.java的代码片段:
// public class BookMeetingRoomRequest {
// 对比来自java/cc/unitmesh/untitled/demo/entity/MeetingRoom.java的代码片段:
// public class MeetingRoom {
// 对比来自java/cc/unitmesh/untitled/demo/controller/BlogController.java的代码片段:
// @ApiOperation(value = "Create a new blog")
// 对比来自java/cc/unitmesh/untitled/demo/controller/BlogControllerTest.java的代码片段:
// class BlogControllerTest {
// 对比来自java/cc/unitmesh/untitled/demo/DemoApplicationTests.java的代码片段:
// class DemoApplicationTests {
// 对比来自java/cc/unitmesh/untitled/demo/service/BlogService.java的代码片段:
// public class BlogService {
// 对比来自java/cc/unitmesh/untitled/demo/dto/CreateBlogRequest.java的代码片段:
// public class CreateBlogRequest {
// 对比来自java/cc/unitmesh/untitled/demo/controller/BlogCategoryController.java的代码片段:
// public class BlogCategoryController {
// 对比来自java/cc/unitmesh/untitled/demo/dto/MeetingRoomDetailsResponse.java的代码片段:
// public class MeetingRoomDetailsResponse { 对比代码片段: // class CreateBlogRequest {
// title
// content
//
// }// class BlogPost {
// id
// title
// content
// author
// + public BlogPost(String title, String content, String author)
// + public BlogPost()
// + public Long getId()
// + public String getTitle()
// + public void setTitle(String title)
// + public String getContent()
// + public void setContent(String content)
// + public String getAuthor()
// + public void setAuthor(String author)
// }

```Java
// 创建博客
@ApiOperation(value = "Create a new blog")
@PostMapping("/")
public BlogPost createBlog(@RequestBody CreateBlogRequest request) {
CreateBlogResponse response = new CreateBlogResponse();
BlogPost blogPost = new BlogPost();
BeanUtils.copyProperties(request, blogPost);
BlogPost createdBlog = blogService.createBlog(blogPost);
BeanUtils.copyProperties(createdBlog, response);
return createdBlog;
}