1.@RestController为开发提供了方便☺,在提供json接口时需要的配置操作再也不需要自己配置了。
2.@RestController注解相当于@ResponseBody和@Controller的结合
@Controller
@ResponseBody
public class MyController { }@RestController
public class MyRestController { }
@ResponseBody与@Controller
上面说到@RestController注解相当于@ResponseBody和@Controller的结合,那么在这里就大致介绍一下这两个注解的作用;
@ResponseBody
在实际操作中我们只需要在Controller层使用@RequestBody注解就可以将对象进行反序列化;而若需要对Controller的方法进行序列化,我们需要在返回值上使用@ResponseBody;也可以将@ResponseBody注解在Controller类上,这样可以将这个类中所有的方法序列化。
@Controller
@Controller是一种特殊化的@Component类,在实际操作中@Controller用来表示Spring某个类是否可以接受HTTP请求,她通常与@ResponseBody绑定使用。
@Component
1.把普通POJO(Plain Ordinary Java Object简单的java对象)实例化到spring容器中,相当于配置文件中的
2.泛指组件,当组件不好归类的时候,可以使用@Component注解进行标注
@SpringBootApplication
- @SpringBootConfifiguration:组合了 @Confifiguration 注解,实现配置文件的功能。
- @EnableAutoConfifiguration:打开自动配置的功能,也可以关闭某个自动配置的选项。
- @SpringBootApplication(exclude = { DataSourceAutoConfifiguration.class })
- @ComponentScan:Spring组件扫描
1.main方式
2.命令行java -jar的方式
3.mvn/gradle
@EnableAutoConfifiguration (开启自动配置) 该注解引入了AutoConfifigurationImportSelector,该类中
的方法会扫描所有存在META-INF/spring.factories的jar包。
1.集成spring-boot-starter-parent项目
2.导入spring-bootdependencies项目依赖
@PropertySource
@Value
@Environment
@ConfifigurationProperties
## IOC
Spring两大特性:IOC 和AOP
Spring事务的原理是AOP,进行了切面增强,那么失效的根本原因是这个AOP不起作用了
1.发生自调用,类里面使用this调用奔雷的方法(this通常省略),此时这个this对象不是代理类,⽽是 UserService对象本身! 解决⽅法很简单,让那个this变成UserService的代理类即可!
2、⽅法不是public的:@Transactional 只能⽤于 public 的⽅法上,否则事务不会失效,如果要⽤在
⾮ public ⽅法上,可以开启 AspectJ 代理模式。
3.数据库不支持事务
没有被spring管理
异常被吃掉,事务不会回滚(或者抛出的异常没有被定义,默认为RuntimeException)
上一篇:刷题日记---贪心算法
下一篇:独立增量与平稳增量