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标签的正则表达式:<(.*)>(.*)<\/(.*)>|<(.*)\/>