springboot中Annotation核心注解与对spring的认识

1、注解

核心注解 作用
@Controller 标注控制层,注入服务,处理http请求
@RestController 是@ResponseBody和@Controller的组合注解,处理json数据
@RequestMapping 配置url映射
@Value("${xxx}") 项目配置如application.properties
@ConfigurationProperties 把配置文件的信息自动封装成实体类
@SpringBootApplication 申明让springboot自动给程序进行必要的配置,这个配置等同于:@Configuration @EnableAutoConfiguration 和 @ComponentScan 三个配置。
@Configuration 与@Bean一起创建一个简单的spring配置类,可用来代替相应的xml
@EnableAutoConfiguration 能够自动配置spring的上下文,通常会自动根据你的类路径和你的bean定义自动配置
@ComponentScan 会自动扫描指定包下的全部标有@Component的类,并注册成bean,当然包括@Component下的子注解@Service,@Repository,@Controller
@service 标注服务层,注入dao,主要用来进行业务的逻辑处理
@repository 标注数据访问层,也可以说用于标注数据访问组件,即DAO(mapper)组件
@Component 把普通pojo实例化到spring容器中,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类
@Bean 是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。添加的bean的id为方法名
@Data 要先引入lombok,注在类上,提供类的get、set、equals、hashCode、canEqual、toString方法
@AllArgsConstructor 注在类上,提供类的全参构造
@NoArgsConstructor 注在类上,提供类的无参构造
@Setter 注在属性上,提供 set 方法
@Getter 注在属性上,提供 get 方法
@EqualsAndHashCode 注在类上,提供对应的 equals 和 hashCode 方法
@Log4j/@Slf4j 注在类上,提供对应的 Logger 对象,变量名为 log
@Builder 为你的类生成相对略微复杂的构建器API。@Builder可以让你以下面显示的那样调用你的代码,来初始化你的实例对象:xxx.builder().no( “x” ) .name( “x” ).age(x).phone( “x” ).build();
@NotNull 不能为null,但可以为empty
@NotEmpty 不能为null,而且长度必须大于0
@NotBlank 只能作用在String上,不能为null,而且调用trim()后,长度必须大于0
@Pattern(regexp = “xxx”) 验证string对象是否否和正则表达式的规则;注在entity的参数上,可以选择分类也可以默认,在传参或者controller层中的添加@Validated注解进行调用
@Size(min = 2,max = 10) 验证长度是否在给定范围之内
@AssertTrue 验证Boolean对象是否为true【@AssertFalse】
@Min 验证number和string对象是否》=指定的值【@Max】
@DecimalMin 验证number和string对象是否》=指定的值,小数存在精度
@Digits 验证number和string的构成是否合法
@Past 验证Data和Calender对象是否在当前时间之前【@Future】
@Mapper 给mapper接口自动生成一个实现类,让spring对mapper接口的bean进行管理,并且可以省略去写复杂的xml文件
@Options(useGeneratedKeys = true,keyColumn = “id”,keyProperty = “id”) 设置为"true"表明要 MyBatis 获取由数据库自动生成的主键;keyProperty="id"指定把获取到的主键值注入到 XXX(实体类) 的 id 属性
@Transient 用于标记不与数据库表字段对应的实体类字段。
@GeneratedValue 让通用 Mapper 在执行 insert 操作之后将数据库自动生成的主键值回写到实体类对象中。
@ControllerAdvice 优雅地处理异常,需要配合@ExceptionHandler使用。当将异常抛到controller时,可以对异常进行统一处理,规定返回的json格式或是跳转到一个错误页面
@ResponseBody 将java对象转为json格式的数据,将该方法的返回结果直接写入 HTTP response body 中,一般在异步获取数据时使用【也就是AJAX】
@RequestBody 作用在形参列表上,用于将前台发送过来固定格式的数据【xml格式 或者 json等】封装为对应的 JavaBean 对象,封装时使用到的一个对象是系统默认配置的 HttpMessageConverter进行解析,然后封装到形参上。
@ConfigurationProperties 专门编写了一个javaBean来和配置文件进行映射,我们就直接使用
@Value 只是在某个业务逻辑中需要获取一下配置文件中的某项值
@PathVariable(“xxx”) 通过 @PathVariable 可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中。详细见1)

ps:

在这里插入图片描述

2、spring

1、spring家族如:
1)spring framework【核心是ioc、aop,及对第三方各类框架的集成集合】、
2)springboot【简化了基于spring的开发配置过程;专注于微服务方面的开发,和前端解耦;内嵌各种servlet容器,tomcat、jetty等;spring-boot-starter启动器自动依赖其他组件,减少了maven配置;spring-boot-starter-web启动器就拥有了web功能,无需其他配置(自动配置)】、
3)spring cloud【基于springboot提供的一站式微服务框架,整合各类组件进行微服务开发,关注是全局的微服务的整合和管理、相当于管理多个spring boot框架的单体微服务】、
4)spring data【无论是sql还是nosql默认采用整合spring data方式统一处理,添加大量自动配置,屏蔽很多设置,引入各种xxxTemplate、xxxRepisitory来简化我们对数据访问层的操作。如:jdbc、mybatis、jpa、mongoDB…目的是为了简化构建基于spring框架的数据访问技术,包括非关系型数据库、map-reduce框架、云数据服务、关系型数据库等等;】、
5)spring session
6)spring security
7)spring batch
8)spring MVC【基于servlet推出的MVC框架,处理web开发的路径映射和视图渲染、主要是mvc前后台一起开发】…


2、术语
ioc(控制反转):提供依赖注入容器【调用类对某个接口实现类的依赖调用由第三方(Spring的容器)来实现,以移除调用类对某一接口实现类的依赖,从而减少代码的耦合度。】
aop:面向横切面编程

3、常用正则表达式

1)  匹配首尾空格的正则表达式:(^\s*)|(\s*$)
2)  整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$
3)  只能输入数字:"^[0-9]*$"。
4)  只能输入n位的数字:"^\d{n}$"。
5)  只能输入至少n位的数字:"^\d{n,}$"。
6)  只能输入m~n位的数字:。"^\d{m,n}$"
7)  只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"。
8)  只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"。
9)  只能输入有1~3位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"。
10)  只能输入非零的正整数:"^\+?[1-9][0-9]*$"。
11)  只能输入非零的负整数:"^\-[1-9][]0-9"*$。
12)  只能输入长度为3的字符:"^.{3}$"。
13)  只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$"。
14)  只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"。
15)  只能输入由26个小写英文字母组成的字符串:"^[a-z]+$"。
16)  只能输入由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"。
17)  只能输入由数字、26个英文字母或者下划线组成的字符串:"^\w+$"。
18)  验证用户密码:"^[a-zA-Z]\w{5,17}$"正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。
19)  验证是否含有^%&',;=?$\"等字符:"[^%&',;=?$\x22]+"。
20)  只能输入汉字:"^[\u4e00-\u9fa5]{0,}$"
21)  验证Email地址:"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"。
22)  验证InternetURL:"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"。
23)  验证电话号码:"^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$"正确格式为:"XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。
24)  验证身份证号(15位或18位数字):"^\d{15}|\d{18}$"。
25)  验证一年的12个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"1"~"12"。
26)  验证一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"和"1"~"31"。
27)  匹配中文字符的正则表达式: [\u4e00-\u9fa5]
28)  匹配双字节字符(包括汉字在内):[^\x00-\xff]
29)  应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)String.prototype.len=function(){return this.replace(/[^\x00-\xff]/g,"aa").length;}
30)  匹配空行的正则表达式:\n[\s| ]*\r
31)  匹配html标签的正则表达式:<(.*)>(.*)<\/(.*)>|<(.*)\/>
发布了33 篇原创文章 · 获赞 2 · 访问量 6934

猜你喜欢

转载自blog.csdn.net/qq_42677329/article/details/104158359