0. 填坑了
ajax携带Json对象,请求参数被构造成另一种格式_1
ajax携带Json对象,请求参数被构造成另一种格式_2
1.controller
@RequestBody
请求体(载荷payload)
作用在请求参数的一个需要被映射的对象或Map上
基于json配置与key同名的对象属性
content-Type为application/json
只有一个
@ResponseBody
作用在请求方法上
将返回结果作为响应体
@ResquestHeader
同上
@RestController
作用在Class
使得该类的所有请求返回json(相当于群体@ResponseBody)
@RequestParam
路径携带的参数
可以有多个
常用通过其required属性,自动校验非法的空值
@RequestMapping
如果不指定method属性,那么默认接收所有的请求方式
@CrossOrigin
跨域
注解在方法、控制器上
2.bean
@Autowired
如何解决同接口实现类的注入 -> 借助 @Qualifier(“beanId”)
@Resource
如何解决同接口实现类/同名接口实现类的注入 -> @Resource(type=xxx.class)
@ControllerAdvice + @ExceptionHandler 异常处理
@ExceptionHandler
@Controller中处理局部异常
@ControllerAdvice中处理全局异常
@Scope
springIoc容器中的作用域
作用域 | 描述 |
---|---|
singleton单例模式 | 全局有且仅有一个实例,但是如果实例中有非静态变量时,会导致线程安全问题,共享资源的竞争 |
prototype原型模式 | 每次获取Bean的时候会有一个新的实例,当请求数越多,性能会降低,因为创建的实例,导致GC频繁 |
request | request表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效 |
session | session作用域表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效 |
globalsession | global session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义 |
@Lazy
spring懒加载使用
@lazy注解处理循环注入问题 和彻底理解循环依赖底层原理
@Lookup
注入多例bean
gitee simple code
3. 事务
@Transactional
透彻的掌握 Spring 中@transactional 的使用
@Transactional注解的属性说明
@Transactional改用AspectJ解决事务自调用问题
StackOverFlow => warning javax.* types are not being woven because the weaver option ‘-Xset:weaveJavaxPackages=true’ has not been specified
StackOverFlow => AspectJ: Error can’t determine superclass of missing type
解决事务自调用问题方案二:AopContext.currentProxy()
@Cacheable
Spring cache简介&使用
Spring cache 指定KeyGenerator_1
Spring cache 指定KeyGenerator_2
@Retry
Spring Retry使用总结
@Async
@Async是基于AOP实现的(也就是代理)
4. 配置类
@ComponentScan
404 很可能是basePackages覆盖原来的扫包路径(启动类及其下级)
@Bean
@Import & ImportSelector
@Conditional_1
@Conditional_2
@ConfigurationProperties 读取配置
手写一个springboot的自动配置
手写一个springboot的starter
5. 事件
@EventListener
Spring 事件&监听
6. 测试
7. 遇到的问题
property path is neither an array nor a List nor a Map
get请求不要使用ajax传输json