赞
踩
自动添加set、get方法
按类自动导入,由Spring提供,与springboot耦合度高。
@Autowired和@Resource注解的区别和联系_莫小兮丶的博客
默认通过byName注入,如果没有匹配则通过byType注入,J2EE提供,与springboot耦合度低
@Autowired和@Resource注解的区别和联系_莫小兮丶的博客
此注解使用在字段、构造器参数和方法参数上。@Value可以指定属性取值的表达式,支持通过#{}使用SpringEL来取值,也支使用${}来将属性来源中(Properties文件、本地环境变量、系统属性等)的值注入到bean的属性中。
具体使用方法见 spring的@Value注解使用_菊花超人的博客
@ConfigurationProperties(prefix = "spring.datasource")
读取配置文件,填充到对应属性中,属性名称不要求一定相同,只需保证“set”字符串拼接配置文件的属性和setter方法名相同即可,支持松散绑定。
标注在Bean类上则填充其中对应属性,用在方法上则填充返回值中对应的属性。
帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot,并创建对应配置类的Bean,并把该Bean实体交给IoC容器进行管理。
具体使用方法不会,找了一堆资料都是讲原理。
(49条消息) SpringBoot之@EnableAutoConfiguration注解_zxc123e的博客-CSDN博客_enableautoconfiguration
用来代替配置文件中的 component-scan 配置,开启组件扫描,即自动扫描包路径下的 @Component及相关 注解进行注册 bean 实例到 context 中。
Spring Boot注解之@ComponentScan用法和实现原理 - 楼兰胡杨 - 博客园 (cnblogs.com)
这是一个Bean。
@Component的拓展,此注解标注的类中 @Bean标记的方法的返回值添加为组件,如未指定组件名,默认为方法名。
@Configuration与@Component作为配置类的区别 - 掘金 (juejin.cn)
Spring的单例bean与原型bean - 简书 (jianshu.com)
可在@Component 和 @Configuration 标注的类中方法上使用,将其返回值作为组件,如未指定组件名,默认为方法名。
在@Component组件中使用,获取的Bean每次都不是同一个对象 ,类似于原型Bean
在@Configuration组件中使用,获取的Bean每次都是同一个对象,类似于单例Bean。
数据访问层Bean,@Component的拓展
业务层Bean,@Component的拓展
控制层Bean,@Component的拓展
它用来修饰一个非静态的void方法。它会在服务器加载Servlet的时候运行,并且只运行一次,类似于Servlet的inti()方法。
执行的顺序是: 构造方法 -> @PostConstruct -> init()方法 -> @PreDestroy -> destroy()方法。
(49条消息) @PostConstruct与@PreDestroy使用_凌兮~的博客-CSDN博客
被@PreDestroy修饰的方法会在服务器卸载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet的destroy()方法。
执行的顺序是: 构造方法 -> @PostConstruct -> init()方法 -> @PreDestroy -> destroy()方法。
(49条消息) @PostConstruct与@PreDestroy使用_凌兮~的博客-CSDN博客
控制器类Bean,@Component的拓展
直接返回结果,并转化为json格式
此注解用于方法和exception类上,声明此方法或者异常类返回的http状态码。可以在Controller上使用此注解,这样所有的@RequestMapping都会继承。
当于@ResponseBody+@Controller合在一起的作用,此注解用于class上,声明此controller返回的不是一个视图而是一个领域对象,对象对转为json字符串。
将Web请求与请求处理类中的方法进行映射,@RequestMapping可以定义动态路径 ,下面几个也是。
@RequestMapping("/users/{uid}")
将HTTP get请求映射到特定处理程序的方法注解。
将HTTP post请求映射到特定处理程序的方法注解。
用于处理HTTP PUT请求。
用于处理HTTP DELETE请求。
将web请求中的属性(request attributes,是服务器放入的属性值)绑定到方法参数上。
注意和@RequestParam区分开,attribute一般是后端加入请求中的,param一般是前端表单或路径参数加到请求中的。
用于基本数据类型,复杂数据类型限制要用@Valid,放在参数前,表示只能接收参数a=b格式的数据,即 Content-Type
为 application/x-www-form-urlencoded
类型的内容,如表单。
Http–@RequestBody和@RequestParam详解_Schafferyy的博客
@RequestParam和@RequestPart的区别_借物小人的博客
@RequestPart主要用来处理content-type为multipart/form-data
或multipart/mixed stream
发起的请求,可以获取请求中的参数,包括普通文本、文件或复杂对象比如JSON、XML等,针对复杂对象,需要明确对应的content-type。
@RequestParam默认主要来处理query parameters, form data,and parts in multipart requests, 且是 key-value键值对这种文本
放在参数前,表示参数从request body中获取,而不是从地址栏获取,所以这肯定是接收一个POST请求的非a=b格式的数据,即 Content-Type
不为 application/x-www-form-urlencoded
类型的内容,一般用于json形式请求。
Http–@RequestBody和@RequestParam详解_Schafferyy的博客
原本是@RequestBody Long ***
JSON parse error: Cannot deserialize value of type `java.lang.Long` from Object value (token `JsonToken.START_OBJECT`); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize value of type `java.lang.Long` from Object value (token `JsonToken.START_OBJECT`)\n at [Source: (PushbackInputStream); line: 1, column: 1]
封装到一个bo类后解决。
获取url中的数据。
@RequestMapping("/users/{uid}")\
public String execute(@PathVariable("uid") String uid){\
}
把Request请求header部分的值绑定到方法的参数上,不存在则默认为null。
@RequestMapping(value = "/hello.htm")
public String hello(@RequestHeader(value="User-Agent", defaultValue="foo")String userAgent){
//..
}
此注解用在@RequestMapping声明的方法的参数上,可以把HTTP cookie中相应名称的cookie绑定上去。
@ReuestMapping("/cookieValue")
public void getCookieValue(@CookieValue("JSESSIONID") String cookie){
}
cookie即http请求中name为JSESSIONID的cookie值。
此注解用在class和method上用来支持跨域请求,是Spring 4.2后引入的(没用过,不懂)。
@CrossOrigin(maxAge = 3600)
@RestController
@RequestMapping("/users")
public class AccountController {
@CrossOrigin(origins = "http://xx.com")
@RequestMapping("/login")
public Result userLogin() {
// ...
}
}
通过此注解,可以通过模型索引名称来访问已经存在于控制器中的model,没用过,不常用。
Spring MVC @ModelAttribute详解 - 知乎 (zhihu.com)
Spring MVC @ModelAttribute注解 (biancheng.net)
此注解用于type级别,用于将JavaBean对象存储到session中。
Spring MVC @SessionAttributes注解 - Just_Do - 博客园 (cnblogs.com)
@SessionAttributes参数
1、names:这是一个字符串数组。里面应写需要存储到session中数据的名称。
2、types:根据指定参数的类型,将模型中对应类型的参数存储到session中
3、value:其实和names是一样的。
@SessionAttributes(value={"names"},types={Integer.class})
@Controller
public class Test {
@RequestMapping("/test")
public String test(Map<String,Object> map){
map.put("names", Arrays.asList("caoyc","zhh","cjx"));
map.put("age", 18);
return "hello";
}
}
1、request中names:${requestScope.names}<br/>
2、request中age:${requestScope.age}<br/>
<hr/>
3、session中names:${sessionScope.names }<br/>
4、session中age:${sessionScope.age }<br/>
两个valid区别及@Validated分组用法见
@Validated注解详解,分组校验,嵌套校验,@Valid和@Validated 区别,Spring Boot @Validated_昌杰的攻城狮之路的博客
Spring Boot 数据校验@Valid+统一异常处理_JYT IMXB的博客
@Validated注解详解,分组校验,嵌套校验,@Valid和@Validated 区别,Spring Boot @Validated_昌杰的攻城狮之路的博客
验证对象是否为null
验证对象是否不为null, 无法查检长度为0的字符串
检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.
检查约束元素是否为NULL或者是EMPTY.
验证 Boolean 对象是否为 true
验证 Boolean 对象是否为 false
验证对象(Array,Collection,Map,String)长度是否在给定的范围之内
Validates that the annotated string is between min and max included.
验证 Date 和 Calendar 对象是否在当前时间之前
验证 Date 和 Calendar 对象是否在当前时间之后
验证 String 对象是否符合正则表达式的规则
建议使用在Stirng,Integer类型,不建议使用在int类型上,因为表单值为“”时无法转换为int,但可以转换为Stirng为"",Integer为null
验证 Number 和 String 对象是否大等于指定的值
验证 Number 和 String 对象是否小等于指定的值
被标注的值必须不大于约束中指定的最大值. 这个约束的参数是一个通过BigDecimal定义的最大值的字符串表示.小数存在精度
被标注的值必须不小于约束中指定的最小值. 这个约束的参数是一个通过BigDecimal定义的最小值的字符串表示.小数存在精度
验证 Number 和 String 的构成是否合法
验证字符串是否是符合指定格式的数字,interger指定整数精度,fraction指定小数精度。
Checks whether the annotated value lies between (inclusive) the specified minimum and maximum. @Range(min=10000,max=50000,message=“range.bean.wage”) private BigDecimal wage;
递归的对关联对象进行校验, 如果关联对象是个集合或者数组,那么对其中的元素进行递归校验,如果是一个map,则对其中的值部分进行校验.(是否进行递归验证)
信用卡验证
验证是否是邮件地址,如果为null,不进行验证,算通过验证。
示例(AjaxResult是自定义类)
@RestControllerAdvice public class MyExceptionHandler { private static final Logger log = LoggerFactory.getLogger(MyExceptionHandler.class); /** * 基础异常 */ @RespondBody @ExceptionHandler(MyException.class) public AjaxResult baseException(MyException e) { return AjaxResult.error(e.getMessage()); } @RespondBody @ExceptionHandler(Exception.class) public AjaxResult handleException(Exception e) { log.error(e.getMessage(), e); return AjaxResult.error(e.getMessage()); } }
是@Component注解的一个延伸注解,Spring会自动扫描并检测被@ControllerAdvice所标注的类。
用法
@ControllerAdvice实现优雅地处理异常_KEN DO EVERTHING的博客
@ControllerAdvice 的介绍及三种用法_Ethan.Han的博客
用于标注处理特定类型异常类所抛出异常的方法。当控制器中的方法抛出异常时,Spring会自动捕获异常,并将捕获的异常信息传递给被@ExceptionHandler标注的方法。
声明式事务管理编程中使用的注解
黑马的springboot提到
@PropertySource要搭配@Configuration和@EnableConfigurationProperties(当前类.class)使用,
如使用@Component代替@Configuration,@EnableConfigurationProperties(当前类.class)可省略。
引入单个properties文件:
@PropertySource(value = {"classpath : xxxx/xxx.properties"})
引入多个properties文件:
@PropertySource(value = {"classpath : xxxx/xxx.properties","classpath : xxxx.properties"})
可以额外分为两种模式 相对路径classpath,绝对路径(真实路径)file
注意:单文件可以不写value或locations,value和locations都可用
相对路径(classpath)
绝对路径(file)
取值:使用@Value注解取配置文件中的值
@Value("${properties中的键}")\
private String xxx;
导入额外的配置信息
功能类似XML配置的,用来导入配置类,可以导入带有@Configuration注解的配置类或实现了ImportSelector/ImportBeanDefinitionRegistrar。
使用示例
@SpringBootApplication
@Import({SmsConfig.class})
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
在接口类上添加了@Mapper,在编译之后会生成相应的接口实现类
@Mapper
public interface UserDAO {
//代码
}
作用:指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类
@SpringBootApplication
@MapperScan({"com.kfit.demo","com.kfit. * .mapper","org.kfit. * .mapper"})
public class SpringbootMybatisDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootMybatisDemoApplication.class, args);
}
}
MyBatis手把手跟我做(八) Mybatis注解 - Mr.Yan
MyBatis常用11种注解 - MyBatis中文官网
此注解使用在方法上,声明此方法被定时调度。使用了此注解的方法返回类型需要是Void,并且不能接受任何参数。
@Scheduled(fixedDelay=1000)
public void schedule() {
}
@Scheduled(fixedRate=1000)
public void schedulg() {
}
此注解使用在方法上,声明此方法会在一个单独的线程中执行。不同于Scheduled注解,此注解可以接受参数。使用此注解的方法的返回类型可以是Void也可是返回值。但是返回值的类型必须是一个Future。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。