企业级系统
-
大规模:用户数量多,数据规模大,功能众多
-
性能和安全要求高
-
业务复杂
-
灵活应变
轻量级框架
高内聚(模块内部尽可能关联),低耦合(模块与模块之间的关系尽可能的低)
高内聚:描述了模块内部的一系列功能的相关程度,对于功能之间相关度不高或者根本没有相关性的功能包含在模块中的做法是不可取的。
低耦合:描述了模块直接的依赖、感知程度,耦合的衡量标准是从低到高,一般来说耦合度越低越好。
独立性高
生命周期
实例化—>设置属性—>使用javabean
单例模式:创建始终是一个对象
约束
依赖注入
- Setter注入
对应的javaBean里面的属性必须要封装必须要有无参的构造函数
- 构造器注入
必须要有参数的构造器
- 使用constructor标签进行注入
所有注入类型分为2种类型:普通参数
- P命令空间注入
导入P命令空间约束
他是在bean标签属性 p:属性名=“” p:属性名-ref=“引用的id”
不同类型注入
<!CDATA[转义字符]>
内部bean
List Array Set 使用
map类型
prorerties类型
值
注解方式
注入@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解析
- 动态代理
两大核心技术
iocioc(DI):控制反转(翻转的角度)/依赖注入(spring容器)
- 谁控制了谁(容器控制了对象),
- 谁反转了谁(从调度者到了spring容器)
- 如何进行反转(spring容器进行反转)
- 反转的对象是谁(Javabean)
两种生成Javabean的方式
xml:
- id—> 等同于变量名
- class–>由哪个类创建的对象
- scope —>设置是单例模式还是圆形模式(protoType),默认单例模式(singleton)
- lazy-init —>懒加载
1.属性注入:
- 普通参数使用 value属性
- 对象使用 ref属性 setter注入
- list set arraylist使用list标签
- map使用
- properties 使用
- 特殊字符:
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(访问修饰符 返回值类型 包名 +类名+方法(参数)
- 除参数以外所有的都可以使用* 代替,参数使用英文的两个点代替(…)—通配符
项目开发思想:高内聚,低耦合
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)