目录
简单springboot应用创建
选择需要依赖的Starter
,这里勾选了Web和Thymeleaf
springboot目录结构
java 源代码目录
- controller:控制层
@Slf4j
@Api(tags = "User")
@RestController
@RequestMapping("/api/users")
public class UserController {
@Autowired
private UserService UserService;
@ApiOperation(value = "新建用户")
@PostMapping("/user")
public Result<Boolean> create(@ApiParam("参数描述") @Valid @RequestBody UserCreateVO vo) {
//将vo转换为dto
//调用业务层创建用户
}
}
@slf4j:类上面添加@slf4j,可以使用log打印日志
@RestController = @Controller + @ResponseBody(以json格式返回结果)
@RequestMapping : 将Web请求与请求处理类中的方法进行映射
@GetMapping:相当于@RequestMapping(method=RequestMethod.Get)
@PostMapping:相当于@RequestMapping(method=HttpMethod.POST) 类似的还有@PutMapping,@DeleteMapping,@PatchMapping
@RequestParam:接收普通参数,required—是否必须包含该参数,默认为true;defaultValue—设置默认参数值
@RequestBody:用于接收前端传递给后端的json字符串中的数据(请求体中的数据);在使用@RequestBody接收数据时,前端只能使用POST方式进行提交。
@PathVariable:用于接收请求路径中占位符的值
@API:使用在类上,表明是swagger资源,@API拥有两个属性:value、tags(生成的api文档会根据tags分类,value类似于tags,但不能有多个值)
@ApiOperation:使用在方法上,表示一个http请求的操作,常用属性有value—方法描述,notes—提示内容,tags—重新分组(视情况而用)
@ApiParam:使用在方法上或者参数上,字段说明;name–参数名,value–参数说明,required–是否必填
注:以上3个注解为swagger中的常见注解
@Valid:检验参数是否有效(@Valid常见注解见https://www.cnblogs.com/acm-bingzi/p/spring_valid.html)
/* 比如请求:
public String login(@Valid User user) {...} /*
public class User {
@NotBlank(message = "姓名不能为空")
@Length(message = "姓名最长为20个字符", min = 1, max = 20)
private String name;
@NotBlank(message = "密码不能为空")
@Length(message = "密码最少为8个字符,最长为30个字符", min = 8, max = 30)
private String password;
}
@ControllerAdvice:@Component注解的一个延伸注解,Spring会自动扫描并检测被ControllerAdvice所标注的类。@ControllerAdvice需要和@ExceptionHandler、@InitBinder以及@ModelAttribbute注解搭配使用,主要是用来处理控制器所抛出的异常信息。首先,我们需要定义一个被@ControllerAdvice所标注的类,在该类中,定义一个用于处理异常的方法,并使用@ExceptionHandler进行标记。
- service:业务层
业务层主要负责业务逻辑应用设计。首先需要设计接口,然后再设计其实现该接口的类(impl包)。这样就可以在应用中调用service接口进行业务处理。service层业务实现,具体调用到已经定义的DAO的接口(对数据库的增删改查 ),封装service层的业务逻辑有利于通用的业务逻辑的独立性和重复利用性 。
详情见https://blog.csdn.net/Nibaby9/article/details/116715665
- Dao(Data Access Object):数据存储对象
entity包:数据库对象的封装
mapper包:sql操作
@Data:实体类上的注解,@Data相当于@Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode这5个注解的合集
注:如果需要使用父类的属性,在使用@Data时需同时加上@EqualsAndHashCode(callSuper=true)注解
@ApiModel():使用在类上,表示对类进行说明,value–表示对象名,description–描述
@ApiModelProperty():使用在方法或字段上,表示对model属性的说明或者数据操作更改,value–字段说明
VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。
DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对象。
resources资源目录
static包:静态资源目录,templates包:展现层页面目录,
application.properties : Spring Boot配置文件
application-local.yml : 数据库配置文件
springboot启动注解
@SpringBootApplication:SpringBoot的启动注解,相当于@SpringBootConfiguration,@EnableAutoConfiguration(开启spring应用程序的自动配置),@ComponentScan(扫描该类所在包及其子包)三个注解。
@Scheduled注解
定义定时任务,使用@Scheduled注解,cron表达式从左到右秒 分 时 日 月 年
@Component
public class CronJob {
@Autowired
private TimedTask timedTask;
@Scheduled(cron = "0 0/1 * * * ?")
public void processBy1min() {
timedTask.process();
}
}