Controller层
//设置当前控制器类为RESTful风格,等同于@Controller与@ResponseBody两个注解的组合功能
@RestController
//设置当前控制器方法(模块)的请求访问路径
@RequestMapping("/web/role")
//依赖注入/自动装配,获取Bean
@Resource
@Autowired
Autowired和Resource的区别
两者作用相当,都是依赖注入,@Autowired是Spring中的注解,@Resource属于Java EE。
默认情况下@Autowired是按照类型byType注入的;@Resource默认按照名称byName注入。
@Autowired如果要按照类型注入,需要使用@Qualifier一起配合。而@Resource如果指定了name,则用byName自动装配,如果指定了type,则用byType自动装配。
推荐使用@Resource,装配顺序更为简单,更快,且属于Java EE,减少与Spring的耦合。
HTTP请求
//GET请求,从服务器获取资源
@GetMapping
//POST请求,传递对象参数时使用
@PostMapping
//DELETE请求,删除
@DeleteMapping
前后端参数传递
//放方法参数的前面,用于接收JSON数据,常搭配@PostMapping
@RequestBody
//用于接收URL地址传参或表单传参的key-value格式的数据
@RequestParam
//接收路径参数,使用{参数名}描述路径参数
@PathVariable
//json格式返回结果给前端
@ResponseBody
Model(Entity)层
//Lombok注解
@Data
JSON格式处理
//属于jackson,将日期类型数据在JSON格式和java.util.Date对象之间转换。
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
//是Spring所有,对Date、Calendar、Long及Joda时间类型的属性进行格式化处理
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat和 @DateTimeFormat 区别
@JsonFormat既可以约束前端传入的时间类型参数格式,也可以约束后端响应前端的时间类型格式;与请求的数据类型有关,必须为json类型。
@DateTimeFormat只能约束前端传入的时间类型参数格式。
参数校验
//非空
@NotBlank(message = MessageConstant.CARD_DID_IS_NOT_EMPTY
, groups = {CompanyReq.CreateCompanyGroup.class)
public interface CreateCompanyGroup {
}
//非空
@NotNull(message = MessageConstant.CARD_DEVICE_TYPE_IS_NOT_EMPTY)
//SpringMVC提供的,标注方法参数需要校验
@Validated(CompanyReq.CreateCompanyGroup.class)
//
@Min
//
@Max
//
@Size(max = 150, message
= MessageConstant.RETROACTIVE_APPLY_APPLY_REASON_OVER_MAX_SIZE)
//
@Pattern(regex=,flag=)
Service层
//注册业务实现的Bean,Bean处理
@Service
//打日志
@Slf4j
//通用,不好归类的组件放入IOC容器里,一般共用的类会用上这个注解
@Component
//声明配置类
@Configuration
@Component(更常用)和@Bean的区别
都是注册Bean到IOC容器当中,通过@Resource注入(装配)。
@Bean在配置类中使用,即类上需要加上@Configuration注解。
@Configuration
public class MyBeans {
@Bean
public UserService userServiceImpl() {
return new UserServiceImpl();
}
}
若要将第三方库中的类注册到IOC容器里,在这种情况下,是没有办法在它的类上添加@Component注解的,只能通过@Bean实现。
读取配置
//直接读取各种配置的属性值
@Value
//读取配置信息并加载到Java配置类里,通过类获取对应属性
@ConfigurationProperties
测试
//声明一个方法为测试方法
@Test
//被声明的测试方法的数据会回滚,避免数据污染
@Transactional
@Transactional(rollbackFor = Exception.class)
DAO(Mapper)层
//注册持久层的Bean
@Mapper
@Repository
Mapper和Repository的区别
@Repository是Spring 的,@Mapper是mybatis的。都是注入DAO接口
如果使用@Repository注解,那么启动类上还需要配合@MapperScan配置扫描类。
@Mapper注解不需要配置MapperScan,通过xml里面的namespace里面的接口地址,生成bean对象后即可注入到Service里面。如果不在dao的接口上添加@Mapper,可以在启动类上添加@MapperScan("")指明扫描的位置。
还有一种注入DAO接口的方式:
在MybatisPlus的配置文件里加入@MapperScan,指定扫描DAO的路径。
此外:
当mapper接口和接口对应的xml映射文件在命名上不同或所在的路径不同时,需要在application配置xml路径,实现接口绑定。
mybatis.config-location=classpath:mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/**/*Mapper.xml
以及:
mybatis中,映射文件中的namespace是用于绑定Dao接口,绑定接口后,便于定位指定SQL语句。
详细解释:在大型项目中,存在大量SQL语句,为每个SQL语句起一个唯一的标识(ID)不容易。为每个映射文件起一个唯一的命名空间,这样定义在这个xml文件中的每个SQL语句就成了定义在这个命名空间中的一个ID。所以只要能够保证每个命名空间中的ID是唯一的,即使在不同映射文件中的语句ID相同,也不会再产生冲突了。
配置启动
/**
* 是SpringBoot的核心注解,它是一个组合注解。
* @ComponentScan,告诉Spring扫描的包的位置,用注解标识的Bean会被Spring自动扫描并装入IOC容器当中。
* @SpringBootConfiguration,它继承了@Configuration,标注配置类
*/
@SpringBootApplication
//Mybatis扫描DAO接口路径
@MapperScan(basePackages = {"com.leelen.cloud.office.*.mapper"})
//它是修饰Bean的一个注解,当bean被注册之后,如果有注册相同类型的bean,就不会成功,它会保证你的bean只有一个,即你的实例只有一个。可以用来修饰主启动类,以及自定义的配置类
@ConditionalOnMissingBean
//Nacos服务发现
@EnableDiscoveryClient
标签:xml,Mapper,常用,Resource,SpringBoot,接口,Bean,注解
From: https://www.cnblogs.com/fallorange/p/17749690.html