Spring笔记
Spring容器里面包含了许多的对象相当于是一个对象仓库在这里面所有的对象称为Bean写代码的时候不需要手动new对象而是让Spring帮助创建和管理。Autowired与Resource作用一样都是依赖注入(DI)。想使用仓库的某个Bean的时候在变量的头上贴上这个注解Spring会自动的从仓库中将这个Bean拿出来。找东西方式不一样前者是Spring框架自带的注解按照类型(Type)找缺点如果一个接口有两个实现类就会报错必须搭配Qualifier()告诉具体名字。设置成Autowired(required false)能避免报错Spring在找不到的时候会把这个变量赋值为null程序继续正常启动。后者是Java EE标准自带注解默认按名字(Name)找去仓库找完全匹配的Bean找不到就会按照类型找。required false搭配RequestParam(value title,required false)String title,为true的时候当前端发起HTTP请求时如果没传title参数SpringMVC直接扔出400 Bad Request错误改成false前端就算没传这个参数请求也能进来只是title会被赋值为null。虽然false能防止程序崩溃但是也埋下了一个雷就是NullPointerException(空指针异常)。在使用required false时在后面真正使用这个变量之前必须加上if(xxx ! null)的判空逻辑。Component:加在类头上表示将这个类实例化成对象并放到IOC仓库中一切Spring Bean注解的老祖宗和ControllerServiceRepository注解是父子关系为了代码更清晰派生出了这三个注解Controller告诉Spring框架这个类是一个控制层组件专门负责接待来自浏览器的HTTP请求在类上加上这个注解Spring就会监听发给服务器的网络请求比如当用户在浏览器访问/publish时这个注解就会把这个请求派给带有PostMapping(/publish)的方法去处理接受用户请求然后把活给业务层,最终决定给用户展示哪个界面比如return publish就是把渲染后的页面端给用户。Repository:往仓库中放东西在一个类头上加上这个注解时相当于告诉Spring把这个类实例化成Bean存放到仓库中。(通常是在跟数据库打交道的Mapper或DAO类身份是数据访问层)处理把类变成Bean还可以做异常转换不同数据库报错不一样该注解可以把晦涩难懂的底层数据库异常统一翻译成Spring自带的异常体系(DataAccessException)Service业务逻辑层写核心代码Controller拿到数据后会通过Autowired或Resource把Service叫过来把数据交给他处理RequestParam从HTTP请求中提取具体的数据自动赋值给Java方法的参数用户在网页的表单中输入标题和内容并提交后会将这些数据打包成HTTP报文。RequestParamvalue title ) String title,从报文中找到叫title的数据提取出来放到后面的title字符串变量去GetMapping(/publish):索要一张空白申请表点击一个查看按钮可以看到相应的页面内容处理HTTP的GET请求核心是获取GET请求参数时参数往往直接挂在网址后面不安全也不能传太大数据PostMapping(/publish)提交申请好的申请表处理HTTP的POST请求核心是提价/创建页面中填写完内容提交是POST请求POST请求的数据藏在HTTP请求的请求体(Body)里网址上看不见相对安全而且可以传输大段文本甚至文件比如上传图片RESTful API接口设计的风格和规范传统GET/getUser?id1RESTfulGET/users/11.URL定位资源只用名词2.HTTP动词描述操作GET查询POST新增PUT修改/更新全量数据DELETE删除3.无状态与JSON交互每一次请求都必须包含服务器理解该请求所需的全部信息Token:一段毫无规律的加密字符串用来证明你是谁以及有没有权限Token通常放在HTTP请求的请求头(Header)里的Authorization字段中相比于传统Session存在服务器内存里Token存在客户端让服务器变为无状态的