@ResponseBody
@ResponseBody
相当于调用 HttpServletResponse
的 getWriter()
输出,
// 中文会乱码
response.getWriter().write("中文");
@ResponseBody
不仅仅简化写入到 response 中的过程,还将编码的问题解决了
response默认返回 字符串 的响应头 是 text/plain
,,@ResponseBody
会返回 application/json
springboot 热加载
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
热重启是监听 target
目录下的文件是否改变,改变才会重启,,所以要么自己编译,或则配置idea自动编译
@RequestMapping
@RequestMapping(value = "/test",method = {RequestMethod.GET})
method 设置请求方式,,接收一个数组,数组中的值是RequestMethod枚举
spring framework 和 springboot 关系
springboot 是spring framework 的应用,,
spring framework 是 springboot的基础
springboot 是抽象出来的更好用的上层框架
模式注解
stereotype annotation
- @Component
- @Controller
- @Service
- @Repository
- @Configuration : 把一组bean加入到容器
@Lazy使用
springboot 注入bean默认是立即实例化,立即注入
,,,但是可以更改springboot这种默认的机制,,让他延迟注入
, @Lazy,
@Lazy失效的原因
: @Lazy可能不会去延迟实例化,,如果一个加了@Lazy的bean,在其他没有加@Lazy的bean引用了,,那么这个bean也不会被延迟实例化,,因为加载一个bean就会去加载这个bean的每一个依赖的bean
springboot默认立即实例化,可以及早的发现问题
注入bean的方式
- @Autowired字段
- @Autowired setter方法
- 使用构造方法,他会自动推断,构造方法中需要的bean,可以不加@Autowired
最为推荐的是:构造方法注入
,写起来最方便的是,属性的方式注入
@Autowired
@Autowired 推断方式 :
- by type : 按照类型
- by name : 按照名字
默认是按照类型推断,,当一个接口,注入了多个实现类的时候,,@Autowired会找到多个,,找到多个之后,会根据字段的名字去推断,,如果字段的名字找不到这个bean会报错
@Autowired
:是被动注入,,先根据type
@Qualifier
: 主动注入,, 主动根据name去找
策略模式
- 一个接口 ===》 多个实现类
- 一个实现类 ===》 通过一个属性去控制策略