spring概况总结

Spring学习

企业级系统

  • 大规模:用户数量多,数据规模大,功能众多

  • 性能和安全要求高

  • 业务复杂

  • 灵活应变

轻量级框架

高内聚(模块内部尽可能关联),低耦合(模块与模块之间的关系尽可能的低)

高内聚:描述了模块内部的一系列功能的相关程度,对于功能之间相关度不高或者根本没有相关性的功能包含在模块中的做法是不可取的。

低耦合:描述了模块直接的依赖、感知程度,耦合的衡量标准是从低到高,一般来说耦合度越低越好。

独立性高


生命周期

实例化—>设置属性—>使用javabean

单例模式:创建始终是一个对象

约束

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"      
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/aop 
        http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">
</beans>

依赖注入

  • Setter注入

对应的javaBean里面的属性必须要封装必须要有无参的构造函数

  • 构造器注入

必须要有参数的构造器

  • 使用constructor标签进行注入

所有注入类型分为2种类型:普通参数

  • P命令空间注入

导入P命令空间约束

他是在bean标签属性 p:属性名=“” p:属性名-ref=“引用的id”

不同类型注入

<!CDATA[转义字符]>

内部bean

List Array Set 使用

<list><value></value></list>

map类型

<map><entry key="" value=""></entry></map>

prorerties类型

<props><prop key="">值</prop></props>

注解方式

注入@AutoWired @Resources

生成javabean @Component @controller @Service @Repository


低侵入式,面向切面编程

把纵向的业务逻辑变为横向的编程思想

  • 连接点:是已经存在的

    切入点:是我即将要操作的

    织入:将东西放入,增强的过程

    通知(advise):增强,放进去的方式 前置增强,环绕增强,后置增强

    切面( aspect )︰类是对物体特征的抽象,切面就是对横切关注点的抽象


Mybatis总结

​ 框架

业务分层

1.web层,视图层:

  • 跳转
  • 页面接收前台页面传入的参数

2.service层,服务层:

  • 数据处理
  • 业务处理

3.dao层,持久化层

  • 与数据库进行交互

4.实体类层:数据的承载

5.工具类层:日期格式化,MD5加密,生成二维码


Mybatis框架

概念:dao层的半自动框架:半自动数据库和数据库表需要自行创建,全自动框架只需创建数据库即可

Mybatis实际上依旧是以sql语句为实现主体

hibernate:是以自带模板为主 HQL 原生的sql

配置文件:mybatis主配置文件

约束是configuration…dtd

根标签是configuration

environments

  • environment
  • transactionManager
  • dataSource

mappers

  • class:配置接口的类路径
  • resource:配置sqlmapper文件路径

typealises:别名

setting:配置

sql mapper(注解方式)

约束是mapper开头

根标签是mapper:namespace:绑定接口或实体类

CRUD实现

  • resulType:返回值类型(大部分用于查询,单条数据还是多条数据)
  • resultMap:绑定sql Mapper当中定义的resultMap
  • parameterType:参数类型

ResultMap:建立持久化类与数据库表之间的关联关系 —ORM

  • 类与表之间的映射
  • 类的实例对象等同与表中的一条数据

子标签

id result association collection

$和#区别

  • ${}:等同于字符串拼接
  • #{}等同于preparedstatement当中的占位符,防止依赖注入

#{变量名:数据库类型}等价于#{变量名,jdbcType=数据库型

动态sql:以标签的形式替代sql语句中部分内容

两个重要对象

sqlsessionFactory(二级缓存,默认关闭)

sqlsession:(一级缓存,默认开启)

Spring总结

service层框架

spring框架的优势

  • 轻量级
  • 低侵入式
  • 解耦,降低耦合性,提高程序健壮性
  • 安全,功能强大

底层使用的技术

  • 反射
  • dom解析
  • 动态代理

两大核心技术

ioc

ioc(DI):控制反转(翻转的角度)/依赖注入(spring容器)

  • 谁控制了谁(容器控制了对象),
  • 谁反转了谁(从调度者到了spring容器)
  • 如何进行反转(spring容器进行反转)
  • 反转的对象是谁(Javabean)

两种生成Javabean的方式

xml:

  • id—> 等同于变量名
  • class–>由哪个类创建的对象
  • scope —>设置是单例模式还是圆形模式(protoType),默认单例模式(singleton)
  • lazy-init —>懒加载

1.属性注入:

  • 普通参数使用 value属性
  • 对象使用 ref属性 setter注入
  • list set arraylist使用list标签
  • map使用
  • properties 使用
  • 特殊字符:<![CDATA[转义字符]]>

2.构造器注入

3.命名空间注入:引入p命名空间约束

  • property标签添加p:属性名/p:属性名-ref给属性赋值

注解

1.生成Javabean的注解

  • @Component(通用组件) @controller @Service @Repository(dao层组件

2.注入属性的注解

@Autowired @Resource @Value

3.开启注解扫描

context:component-scan base-package=“包路径”


Aop

Aop:把纵向的编程思想变为横向的编程思想,在不侵入源代码的前提下,进行增加其业务逻辑的操作,低侵入式

面向切面编程实现的方式

  • 静态代理AspectJ
  • 动态代理Spring Aop

spring实现Aop技术方式

xml

导入schema约束

aop config配置

  • 配置切入点 aop:pointcut/
  • 配置增强aop:adviser/ 方式
  • 连接点 joinpoint
  • 切面 aspect 增强类
  • 织入weave
  • 目标 target

注解

导入jar包

  • aopalliance
  • aspectjweaver
  • cglib-nodep

定义切面类加上@Aspect

定义切入点 @Pointcut (execution(* *(…)))

定义增强方法 @Before @After @Around @AfetrReturning 里面的参数可以是execurtion表达式,可以直接写入切入点

开启动态代理注解aop:aspectj-autoproxy


切入点表达式写法

  • exection()
  • exection(访问修饰符 返回值类型 包名 +类名+方法(参数)
  • 除参数以外所有的都可以使用* 代替,参数使用英文的两个点代替(…)—通配符

项目开发思想:高内聚,低耦合

SpringMVC

重定向不经过视图解析器

Model承载数据

JSONObject.toJSONString(str)

SpringMVC的异步请求

同步:可以避免死锁,速度慢

异步:必须并发执行

@RequestBody

接受字符串实体


405:请求方式不一致,post,get,滥用

415:不支持媒体类型,类型不匹配

403:权限不允许

500:后台代码错误

404:请求路径不存在

文件上传

IO流方式

CommonsmutipartFile类型

步骤:form提交方式method改成post

enctype=“multipart/form-data”

2.CommonsmultipartFile接收文件传入的数据

3.创建对应需要保存的文件地址,一般来说不要放在绝对路径里

4.创建IO流CommonsmutipartFile获取的)和输入流(创建的,写入到新文件中)

视图层框架

需要导入的jar包:web ,webmvc

controller类:请求与响应,必须要纳入spring容器中 @Controller @RestController

  • @PathVairable :从映射路径中获取参数值
  • @RequestParam:获取参数
  • @RequestBody:将JSON类型请求转换成填充到实体类的形参中
  • @ResponeBody:将返回视图变为返回字符串

常用对象

  • Model:(模型对象)承载数据
  • RedirectAttribute:重定向对象
  • ModelAndView:模型视图对象
  • HttpSession:会话对象
  • HttpServletRequest:请求对象
  • HttpServletRespone:响应对象

配置文件

注解扫描

注解驱动:mvc:annotation-driven/

日期转换器

视图解析器

配置web.xml才能使用 核心分发器

配置文件包含进去

<init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/config/springmvc-config.xml</param-value>
</init-param>

设置自启

 <load-on-startup>1</load-on-startup>

设置拦截策略

*.action:只拦截.action结尾的

/:所有的请求都拦截

/*:所有都拦截,包含静态资源

ajax异步请求

json参数

1.请求的类型要设置json/application

2.后面的请求中的形参前面要加上@RequestBody

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值