Spring知识

1、怎么使用spring

 

spring是一个容器,把项目中用的对象放入到容器中

让容器完成对象的创建,对象之间关系的管理(属性赋值)

我们在程序中从容器中获取要使用的对象

2、什么样的对象放入容器中

1)dao类,service类,controller类,工具类--①使用xml配置文件,使用<bean>②注解

2)spring中的对象默认都是单例的,在容器中叫这个名称的对象只有一个

3、放到容器里中的对象

1)实体类对象,实体类数据来自数据库的  

4、不放入spring容器中的对象

1)实体类对象,实体类数据来自数据库的  

2)servlet,listener,filter等

5、使用spring框架的步骤

1)加入依赖

2)创建类:接口,实现类,没有接口的类

3)创建spring的配置文件,使用<bean>声明对象

4)我们使用容器中的对象,通过ApplicationContenxt接口和他的实现类ClassPathXmlApplicationContext的方法调用。

6、核心技术

1)set注入:spring调用类的set方法实现属性赋值①简单类型的set注入<property="属性名"                                                                                     value="属性的值"/>

                                                                               ②引用类型的set注入<property="属性名"                                                                                     value="属性的值"/>

2)构造注入:spring调用有参构造方法:①<constructor-arg>的name属性,那么表示构造                                                                         方法的形参名

                                                                 ②<constructor>的index属性,表示构造方法的形                                                                         参 的位置,从0开始。

3)自动注入:由spring根据某些规则,给引用类型完成赋值,常用的由byName和byType

                       ①:byName按名称注入,java类中引用类型的属性名和spring容器中的id一                                  样,数据类型一样,这样的bean赋值给引用类型

                       ②:byType按类型注入,java类中引用类型的是 数据类型和spring容器中的                                 bean的class是同源关系的,这样的bean能够赋值给引用类型

7、常用注解

8、aop面对切面编程

1)底层是动态代理

①jdk动态代理:使用jdk反射包中的类实现创建代理对象的功能

                          要求:目标类必须实现接口

②cglib动态代理:使用第三方的工具库,实现代理对象的创建

                             要求:目标类必须是能够继承,不能是final

                             原理:就是继承,子类就是代理

2)aop则是动态代理的规范话,把实现动态代理的步骤进行了要给规范定义

3)aop的作用

①.在目标源代码不变的情况下,增加啊功能

②.减少代码的重复性

③.专注于业务功能的实现

④.解耦合:业务功能和日志,事务这些非业务功能的耦合,

9、什么时候考虑用aop技术:

 10、aop的实现框架

1)spring实现了aop,实现方式是接口

2)aspectj框架①使用注解可以是实现aop的功能

                        ②使用xml配置文件中的标签实现aop功能

11、aop中的概念

1)aspect:切面,表示给业务方法增加的功能,一般日志输出,事务,权限检查等是切面 

2)pointcut:切入点,是一个或多个JoinPoint的集合,表示切面功能执行的位置

3)advice:通知,也叫增强,表示切面执行的时间,在方法前,方法后等等

12、aspectj框架的使用

1)表示切面的执行时间,使用的通知注解--

①@Before:前置通知,在目标方法之前先执行切面的功能

②@AfterReturning后置通知,在目标方法之后执行的,能够获取目标方法的返回值

③@Around环绕通知,在目标方法前和后都能增加功能,控制目标方法的执行,修改返回值  

④@AfterThrowing异常通知,在目标方法抛出异常后执行的通知

⑤@After最终通知,总是会被执行的代码

⑥@pointcut定义和管理切入点的辅助注解

⑦代理的使用方式

A.如果目标类有接口,框架使用jdk动态代理

B.如果目标类没有接口,默认使用的cglib动态代理

C.有接口也可以使用cglib动态代理        

2)表示切面位置的切入点表达式:execution(访问修饰符 返回值 包名.类名.方法名称(方法的参数)异常)

13、spring整合mybatis

1)整合的想法:使用spring得到ioc核心技术,把mybatis框架中使用的对象交给spring统一创建和管理,spring是容器,存放你项目中使用的各种对象,例如Service对象,Dao对象,工具类对象等等

2)交给spring的mybatis对象:

①数据源DataSource,使用阿里公司的Druid连接池

②SqlSessionFactory对象,使用的SqlSessionFactoryBean在内部创建的SqlSessionFactory

③Dao代理对象,使用的是MapperScannConfigure,在这个类的内部,调用getMapper(),创建接口的Dao对象

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值