@Controller:标记此类SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法,@Controller 只是定义了一个控制器类。
@RequestMapping("/regUser"):写在方法上,表示方法中的所有响应请求的方法都是以该地址作为父路径。提交和获取参数都连接到 <from action=“/regUser” method="get">。
@ResponseBody 将方法的返回值提交到页面 body标签里(转换为josn)
@RequestMapping("/insert")
@ResponseBody
public String insert(Product product) {
System.out.println("product = " + product);
mapper.insert(product);
return "添加完成<a href='/'></a>";
}
return "添加完成<a href='/'></a>";直接返回到insert页面中.可以写一般的标签.
@RestController=@Controller +@ResponseBody
省略@ResponseBody标签 代替@Controller.
@Autowired 自动装配
ProductMapper 是一个写在mapper的接口;
@Autowired
ProductMapper mapper;
此注解是Spring框架中提供的注解,添加次注解后Spring框架和MyBatis框架,会自动创建一个实现类(实现了ProductMaper接口),并且实例化了此实现类,把实例化后的对象赋予了mapper.
自动实例化接口,并完成数据库驱动连接和创建执行SQL语句对象(PreparedStatement )
@Mapper
用来表示该接口类的实现类对象交给mybatis底层创建,然后交由Spring框架管理,并且可以省略去写复杂的xml文件.
@Insert、@select、@delete
@Insert("insert into product values(null,#{title},#{price},#{num})")
void insert(Product product);
#{变量名} 会自动找到下面的方法中的参数列表的同名方法,如果没有同名参数的话会调用参数列表中对象的getxxx方法.对SQL语句进行封装.
@Result(column = "old_price",property = "oldPrice")
当数据库字段与实体类字段名不一致时使用.
@JsonFormat(pattern = "yyyy年MM月dd日 HH时mm分ss秒", timezone = "GMT+8")
//设置JSON格式
private Date created;
@Value获取配置文件变量
@Value("${username}")
String username
@Bean 将方法的返回值添加到spring容器中
@WebFilter(filterName = "MYFilter", urlPatterns = {"/admin.html", "/insertProduct.html"})过滤器
@ServletComponentScan 添加此注解,过滤器才能生效。
@RestControllerAdvice:全局===>RestController+Advice 元注解
@RequestMapping(value = {"/album"})在类上添加Mapping映射可多添加.
@JsonInclude(JsonInclude.Include.NON_NULL)JSON中空时不创建
@ExceptionHandler 不用写try/catch
@Api(tags = "1管理员管理模块")在线文档排序,别名
@ApiOperation("添加管理员")在线文档排序,别名
@ApiOperationSupport(order = 100)在线文档排序
@ApiModelProperty()用于方法,字段表示对model属性的说明或者数据操作更改 ,参数就会有默认值
@Lazy 懒加载模式(单例)
@Scope("prototye")SpringMVC默认是单例模式(Singleton),添加此注解将变为多例模式.
@Qualifier("albumService")注入指定的bean
@Valid 用于是否验证注解符合要求
public JSONResult addNew(@Valid AlbumAddNewDTO albumAddNewDTO) {}
@NotBlank(message = "密码不能为空")
注意在使用@NotBlank等注解时,一定要和@valid一起使用,不然@NotBlank不起作用
@NotBlank
@NotEmpty
@NotNull(message = "添加失败,相册名称数据不能为空")
private String name;
@PathVariable("id")占位符 @PostMapping("/delete/{id:[0-9]+}")
@Range(min = 1, message = "输入大于0的数")对传入的值进行判断。
@Transactional 事务
@EnableGlobalMethodSecurity(prePostEnabled = true)开启Security权限认证
@PreAuthorize("hasAuthority('/ams/admin/read')")和上面配套使用,只有拥有该权限才能访问
@PreAuthorize("hasAuthority('/ams/admin/read')")
public JSONResult<List<AdminListItemVO>> list(@ApiIgnore @AuthenticationPrincipal LoginPrincipal loginPrincipal) {
log.trace("使用人为:{},id :{}", loginPrincipal.getUsername(), loginPrincipal.getId());
log.trace("查询列表成功");
@ApiIgnore 忽视屏蔽某些参数
@AuthenticationPrincipal 注入LoginPrincipal (LoginPrincipal )是藏在JWT中的数据,此注解常用在输出调用方法的人是谁
@Aspect:作用是把当前类标识为一个切面供容器读取
@Scheduled(fixedRate = 5 * 60 * 1000)// fixedRate:执行间隔时间,以毫秒为单位
@Around("execution(* cn.tude.csmall.product.service.*.*(..))") aop
@EnableDubbo 如果当前项目是Dubbo中的生产者,必须添加@EnableDubbo注解,添加之后,在服务启动时,当前项目的所有服务才能正确注册到Nacos中
@DubboService 标记的业务逻辑层实现类,其中所有的方法都会注册到Nacos
@DubboReference
// 添加@DubboReference注解,表示当前业务逻辑层中需要消费其他模块的服务
// 声明的接口应该是其他服务提供的业务逻辑层接口,因为Nacos中注册了业务的实现类,所以声明的接口会自动匹配到实现类对象
@Accessors(chain = true) 支持链式set赋值,可以连续set
@Test
void addOne() {
Item item=new Item()
.setId(1L)
.setTitle("小米卷纸")
.setCategory("生活")
.setBrand("小米")
.setPrice(10.0)
.setImgPath("xioami.jpg");
}
@AllArgsConstructor 自动生成全参构造方法
@NoArgsConstructor 自动生成无参构造方法
@Document 对应ES框架的一个实体类 //indexName指定ES索引名 例如http中的(/questions),没有的话会自动创建
@Id SpringData通过Id注解标记当前实体类主键
@Field(type = FieldType.Text, analyzer = "ik_max_word", searchAnalyzer = "ik_max_word") 标记分词,定义分词器
@RequestParam(required = false,defaultValue = WebConsts.DEFAULT_PAGE) Integer page //给参数page设置默认值