spring学习过程中的小总结

什么是spring
是一个框架,核心技术ioc、aop、实现解耦合
spring是一个容器,容器中存放的是java对象,需要做的是把对象放入容器中

怎么使用spring
spring是一个容器,把项目中用到的对象放入到容器中
让容器完成对象的创建,对象之间的关系管理(属性赋值)
我们在程序中从容器中获取要使用的对象

什么样的对象放入容器中
dao类、service类、controller类
1.使用xml配置文件,使用
2.注释
spring 中的对象默认都是单列的,在容器中叫这个名称的对象只有一个

不放在到spring容器中的对象
1.实体类对象,实体类数据来自数据库的
2.servlet、listener、filter等

使用spring框架的步骤
1.加入依赖

org.springframework
spring-context
5.2.5.RELEASE

2.创建类:接口、实体类、没有提供接口的类
3.创建spring的配置文件,使用声名对象
4.使用容器中的对象,通过ApplicationContext接口和他的实现类ClassPathXmlApplcationContext的方法getBean()

核心技术
ioc:控制反转
1.理论,思想,概念:指导开发人员在容器中,代码之外管理对象,给属性赋值,管理依赖
2.ioc技术实现使用的di(依赖注入):开发人员在项目中只需要提供对象的名称,对象的创建,查找,赋值都由容器类别资金实现
3.spring使用的di技术,底层使用的是反射机制
di给属性赋值
1.set注入:spring调用类的set方法实现属性的赋值
1.简单类型的set注入
2.引用类型的set注入
2.构造注入:spring调用有参的构造方法
1.的name,name表示构造方法的形参名
2.的index属性,表示构造函数方法的形参位置,从0开始
3.自动注入
由spring根据莫些规则,给引用类型完成赋值,想用的byName和buTepy
1.byName:按名称注入:java类中引用类型的属性名和spring容器中bean的《id》一样,这样的bean赋值给引用类型
2.byTepy:按类型注入:java类中引用类型的是《数据类型》和spring容器中bean的《class》是同源关系,这样的bean能够给引用类型赋值
常用注释
1.@Component创建对象
2.@Reposltory,创建dao对象,用来访问数据库
3.@Service,创建service对象,处理业务逻辑,也可以有事务功能
4.@Controller,创建控制器对象,接收请求,显示处理结果
5.Value,简单类型的属性赋值
6.Autowired,spring框架中引用类型的赋值注释,支持byName,byTepy,默认buTepy
7.@Resource,jdk中的注释,使用自动注入给引用类型赋值,支持byName,byTepy,默认byName
7.@Resource,jdk中的注释,使用自动注入给引用类型赋值,支持byName,byTepy,默认byName
8.注释的使用步骤
1.加入依赖:spring-context,间接加入spring-aop
2.在类中加入注释
3.在spring的配置文件中,加入组件扫描器标签<context:component-scan base-package=“包名”>
ioc能实现解耦合
ioc能够实现业务对象直接的解耦合,例service和dao对象之间解耦合
aop:面向切面编程
底层是动态代理
1.jdk动态代理
使用jdk反射包中的类实现创建代理对象
要求:目标了必须实现接口
2.cglib动态代理
使用第三方的工具库
要求:目标类必须能够继承,不能是final
原理:及时继承,子类即是代理
aop:看做动态代理的规范化,吧实现动态代理的步骤进行了一个规范,定义
aop的作用
1.在目标类下不修改源代码的情况下,增加功能
2.减少重复代码
3.专注业务功能的实现
4.解耦合:业务功能和日志,事物这些非业务功能的耦合
什么时候考虑使用aop
1.当你要给一个系统中存在的类修改功能,但是原油类的功能不完善,但是还有源代码,使用aop就增加功能
2.要给项目中多个类,增加一个相同的功能,要使用aop
3.给业务方法增加食物,日志输出
aop的实现框架
1.spring实现了aop,实现方式是接口
2.aspectj框架
1.使用注释可以实现aop的功能
2.使用xml配置文件的标签实现aop功能
aop中概念
1.aspect:切面,表示给业务方法增加的功能,一般日志输出,事物,权限检查等是切面
2.pointcut:切入点,是一个或多个joinpoint的集合,表示切面功能执行的位置
3.advice:通知,也叫增强,表示切面执行的时间,在方法前,方法后等等
aspectj框架的使用
1.表示切面执行的时间,要使用注释
1.@Before:前置通知,在目标方法之前先执行切面的功能
2.@AfterRetuming后置通知:在目标方法之前执行的,能够获取目标方法的返回值
3.@Around环绕通知,在目标方法前和后都能增加功能,控制目标方法的访问,修改返回值
4.@AfterThrowing异常通知,在目标方法抛出异常后通知
5.@After最终通知,总是会被执行的代码
6@Pointcut定义和管理切入点的辅助注释
7.代理的使用方式
1.如果目标类有接口,框架使用jdk动态代理
2.如果目标类没有接口,默认使用cglib动态代理
3,有接口也可以强制使用cglib动态代理
2.表示切面位置的切入点表达式:execution(访问修饰符 返回值 包名。类名。方法名称(方法参数)异常)
spring整合mybatis
整合的想法:使用spring的ioc核心技术,把mybatis框架中使用的对象叫给spring统一创建和管理,spring是容器,存放项目中要使用的各种对象,例如service对象,Dao对象,工具对象等
交给spring的mybatis对象
1.数据源DataSource,使用阿里公司的Druid连接词
2.sqlSessionFactory对象,要使用SqlSessionFactoryBean在内部创建SqlSessionFactory
3.Dao代理对象,使用MapperScannConFLgure,在这个类的内部,调用geiMapper(),创建接口的Dao对象
spring和mybatis的集合步骤
1.新建maven项目
2.加入maven的依赖
1.spring依赖
mybatis依赖
mysql依赖
spring的事务依赖
mybatis和spring集成的依赖:mybatis官方应用的,用spring项目中创建mybatis的sqlSesissonFactory。dao对象
3.创建实体类
4.创建dao接口和mapper文件
5.创建mybatis主配置文件
6.创建service接口和实现类,属性是dao
7.创建spring的配置文件:声名mybatis的对象交给spring
1.数据源
2.sqlSessionFactory
3.dao对象
声名自定义的service
8.创建测试类,获取service对象,通过service调用到完成数据库的访问
spring事务处理方案
1.适合中小项目使用的,注释方案
spring框架自己用aop实现给业务方法增加事务的功能,使用@Transactional注释增加业务
使用@Transactional的步骤
1.需要声明事务管理器对象
2.开启事务注解驱动,告诉spring框架,要使用注释的方式管理事务。spring使用aop机制,创建@Transactional所在类的代理对象,给方法加入事务功能
spring给事务业务方法加入事务:
在你的业务方法执行之前,先开启事务,在业务方法之后提交或回滚事务,使用aop的环绕通知
写法点击旁边的笔记
3.在你的方法上面加入@Trancational
@Transactional注释是spring的注解,放在public方法上面,表示当前方法具有事务。可以给注释的属性赋值,表示具体的隔离级别,传播行为,异常信息等
2.适合大型项目,有很多的类、方法、需要大量的配置事务,使用aspectj框架的功能,在spring配置文件中声名类,方法需要的事务,这种方式业务方法和事务配置完全分离。
实现步骤:都是在配置文件中实现
1.要使用aspectj框架,需要加入依赖

org.springframework
spring-aspects
5.2.5.RELEASE

2.声名事务管理器对象<bean id = “xx” class = “DataSourceTransactionManager”
3.声名方法需要的事务类型(配置方法的事务属性(隔离级别,传播行为,超时))
4.配置aop:指定哪些类需要创建代理
springweb项目创建
1.创建maven,web项目
2.加入上面的各种依赖
3.编写代码和配置文件
4.创建jsp发起请求
5.创建Servle,接收请求参数
6.创建一个jsp作为显示结果页面

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值