SSM

常用注解

使用需要开启注解支持
组件(除springBoot需要component-scan)
@Repository/@Mapper(数据访问层) @Service(服务层) @Controller(控制层) @Configuration(代替.xml成为bean的配置类) @Component(其余组件)
bean属性自动装配
@Autowired(需注入值的地方) @Qualified(被注入值的地方) @Value(注入值)
作用域
@Scope
url映射位置
@RequestMapping

@mapper和@repository:

@Mapper是mybatis提供的注解,用于实现数据库功能。在 Spring 程序中,Mybatis 需要找到对应的 mapper,在编译的时候动态生成代理类。
@repository则是spring整合mybatis的注解,用于spring容器定位数据访问层

SpringMVC

MVC初解(源自百度百科)

V是view,即前端页面,如html
C是controller,用于接受需求及参数,调用模型,获取响应数据,并返回添加上数据的视图
M即模型,是数据和处理数据的算法。划分模型区域的最佳方法是根据其特性:模型的代码只用写一次就可以被视图重用。

springMVC框架原理:

用户提出请求,DispatcherServlet根据url调用HandlerMapping,经过和调用返回解析信息,DispatcherServlet使用HandlerAdapter,HandlerAdapter根据信息选择Controller,Controller调用数据库实现模型并返回视图逻辑名给DispatcherServlet,Servlet根据结果调用试图呈现

属性传递

@RequestParam:以拼接字符串的方式,把参数装入get类型的URI,value用于在前端表单名和后端实体属性名不同时使用,required用于在无参时自动赋予null值,但注意传入的是int型时会报错,因为只有包装类型可以赋值null
数据回传通常使用Model,也可以通过@RestController
数据从前到后通过post,要求提交的表单中各项name和对象的属性名一致 ,如果表单项没有而后端参数存在的方法会默认赋予null值,可以用对象承接,对象中没有被赋值的自动复制于null

控制器返回的方法(JavaGuide)

Controller 返回一个页面
单独使用 @Controller 不加 @ResponseBody的话一般使用在要返回一个视图的情况,这种情况属于比较传统的Spring MVC 的应用,对应于前后端不分离的情况。
@RestController 返回JSON 或 XML 形式数据
但@RestController只返回对象,对象数据直接以 JSON 或 XML 形式写入 HTTP 响应(Response)中,这种情况属于 RESTful Web服务,这也是目前日常开发所接触的最常用的情况(前后端分离)。
@Controller +@ResponseBody 返回JSON 或 XML 形式数据
如果你需要在Spring4之前开发 RESTful Web服务的话,你需要使用@Controller 并结合@ResponseBody注解,也就是说@Controller +@ResponseBody= @RestController(Spring 4 之后新加的注解)。

@RequestMapping:接收请求,默认不限种类,包括get,post,Head等
@GetMapping():等价于@RequestMapping(method = RequestMethod.Get )

Spring

IOC/DI

参考

https://blog.csdn.net/ivan820819/article/details/79744797

出现原因

面向对象的出现使得内部透明,外部引用变简单,但与此同时对象间的调用情况依旧复杂,如何降低对象间甚至模块间的功能耦合成为焦点

作用

把对象管理交给容器。
如果对象A需要对象B,由容器完成对象B的初始化和调用,直接注入到对象A。所以从另一个方面描述这件事,这被称为依赖注入。

在这里插入图片描述
在这里插入图片描述

实现

通过获得类名,容器可以

缺陷

工作流程

具体应用

AOP

作用和定义

面向切面编程,即把经常用到的附属代码装入,在需要的对象对应位置切入切面,从而简化开发,降低耦合。

关键名词

joint point,是所有可能需要切面的对象
point cut,是对象是否真正需要切面的判断逻辑代码块
advice,通过point cut判断的就可以执行advice了
aspect,point cut和advice组合名词

advice常用api

before:在advice执行前先执行,但不可以跳过advice
after return:在返回值后执行
after throwing:在抛出异常后执行
after:在advice执行后必定执行,包含前两者
around:包含前面所有,前后都执行

Spring的自动装配:

功能

在前端传入表单或后端mybatis对应数据表,与对象的单个属性或集体相同时,可以以对象来替代,而不用写多个参数

自动装配流程:

1 配置文件中加入annotation-config开启注解支持(springBoot不需要)
2 在需要的类上加入组件注释之一
3 注入属性
4 在需要使用的的地方声明,在头上通过@Autowired()实现注入

关于属性注入

对于组件类属性的注入,直接注释后就可以被装配,而对于实体类属性的注入则通常有以下三种方法:
前提条件:pojo类型写好set方法或构造方法
对于Spring
1 被注入的实体类bean
对于SpringBoot
2 @PropertySource(value = “classpath:XXX.properties”)利用配置文件注入属性
3 在实体类上的属性添加@Value("")

关于@Autowired

1 Autowired使用byName查找,属性的名称应对应实体类setxxx中xxx,大小写都可以
2 (required==“false”)可以在没有属性可以注入时照常运行,否则会报NullPointer
3 多个同类型属性bean需用@Qualified()指定
4 启动spring IoC时,容器自动装载了一个AutowiredAnnotationBeanPostProcessor后置处理器,当容器扫描到@Autowired、@Resource(是CommonAnnotationBeanPostProcessor后置处理器处理的)或@Inject时,就会在IoC容器自动查找需要的bean,并装配给该对象的属性
(https://www.cnblogs.com/fnlingnzb-learner/p/9723834.html)
5 自动过滤静态方法和变量,所以装配的量不能为静态,如果要为静态自动装配,通过注解构造方法或set方法的形参来赋值给静态变量

关于@Scope作用域

用于bean身上,规定bean的作用域:
singleton 只能创建一个bean
prototype 每次创建不同bean
request 仅在当次请求中有效
session 仅在本次会话中有效
application 在整个应用过程中都有效

关于注解扫描

Spring注入的流程
首先他会把项目中target -> classes 目录下的「.class」文件进行解析
通过Spring.xml中的「context:component-scan」进行注解扫描
如果这个路径下的「.class」文件的类上面是否存在@Component声明的注解
如果被此类注解修饰,Spring会把所有被注解修饰的bean进行实例化操作 供给@Autowired进行注入
(在spring注解的源码中@Service和@Repository等等都继承了@Component注解)

Mybatis

数据源

用于承载数据库信息,连接数据库的数据结构,包含账号密码等。

mybatis原理级实现:

通过配置文件属性建立用完就丢的sqlsessionfactorybuilder(唯一的建造,用来解耦不需要反复使用的代码),用它建长久保持相当于数据库连接池sqlsessionfactory,他根据xml或注解的具体操作,建立代理接口完成sql语句的sqlsession(相当于一次事务,执行多条语句,回滚后回收)。
session可以获取不同mapper,声明接口型变量来承载对应mapper,后变量调用方法实现,session提交关闭。

参数传递???

多个参数传递值需要用@Param来标识,否则会mysql无法区分,或者使用对象,在需要的地方会自动取出对象对应的属性值,但要配置set和get方法,@Param仅用于普通属性,并且不能和对象共用

@Update("update evaluate set repairs_id=#{repairsId},repairs_time=#{repairsTime},repairs_user_id=#{repairsUserId},service_user_id=#{serviceUserId},repairs_place=#{repairsPlace},repairs_telephone=#{repairsTelephone},repairs_photo=#{repairsPhoto},freetime=#{freetime},repairs_detail=#{repairsDetail},repairs_status=#{repairsStatus}"  where repairs_id=#{repairsId})
        int updateRepairs(Repairs repairs);

注解sql

在接口上可以直接写注解语句

对于同名参数的处理

ResultMap

一对多和多对一(级联)

一对多

可以用子查询和级联实现一对多,也可以直接用join on连接
在这里插入图片描述

在这里插入图片描述

动态sql

缓存

JavaConfig

@import(xxx.class)
专门用于JavaConfig导入

JavaConfig写法:
1.用@Configuration注解JavaConfig类,
2.用每个方法来表示Bean并使用@Bean注解方法。
3.每个方法名代表XML配置文件中的name
4.方法返回对象本身

JavaConfig和SpringBoot自动装配之间的关系??

SSM综合

Restful

什么是Restful

Representational State Transfer,表现层状态转化,即客户端通过HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。
“表现层"其实指的是"资源”(Resources)的"表现层"。
所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符。
我们把"资源"具体呈现出来的形式,叫做它的"表现层"
比如,文本可以用txt格式表现,也可以用HTML格式、XML格式、JSON格式表现,甚至可以采用二进制格式;
资源的具体表现形式,应该在HTTP请求的头信息中用Accept和Content-Type字段指定,这两个字段才是对"表现层"的描述。

什么是RestfulAPI

网络分为前后端,各种前端设备如平板,手机等变换层出不穷,而服务器一般保持电脑。
因此,必须有一种统一的API机制,方便不同的前端设备与后端进行通信,RESTful API是目前比较成熟的一套互联网应用程序的API设计理论。

怎么用RestfulAPI

协议选择

https

域名和版本位置

api放在主域名前,版本应在主域名后,如:https://api.example.com/v1

路径
过滤

?=参数
通过参数过滤信息

状态码
错误处理
HTTP动词
返回结果

以下是不同操作后服务器返回给客户端的结果
GET /collection:返回资源对象的列表(数组)
GET /collection/resource:返回单个资源对象
POST /collection:返回新生成的资源对象
PUT /collection/resource:返回完整的资源对象
PATCH /collection/resource:返回完整的资源对象
DELETE /collection/resource:返回一个空文档
http://www.ruanyifeng.com/blog/2014/05/restful_api.html
http://www.ruanyifeng.com/blog/2011/09/restful.html

项目结构

sources(或src)文件:装源代码
resources文件:装资源文件(如配置文件)

关于lombok

作用

主要缩减实体类的冗余代码

使用方法

1 IDEA在setting/plugin处下载lombok
2 在pom中加入(版本自定,不带version无法使用)

<dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
          <version>1.18.10</version>
      </dependency>

3 在实体类上使用注释

重要注释

@Data可以提供get/set/equals/hashCode/toString
@NoArgsConstructor/@AllArgsConstructor 提供构造方法

SSM常见的404错误

ideaweb项目不会自己配置所需jar包,需手动添加:
project structure选中当前项目,在WEB-INF下面添加lib,lib导入jar包

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值