spring
2021-05-13 18:13:18 0 举报
AI智能生成
Spring思维导图
作者其他创作
大纲/内容
什么是spring
是一个框架,核心技术是ioc,aop,实现解耦合
spring是一个容器,容器中存放java对象,需要做的是把对象放入到容器中
怎么使用spring
spring是一个容器,把项目中用到的对象放入到容器中
让容器完成对象的创建,对象之间的关系管理(属性赋值)
我们在程序中从容器中获取要使用的对象
什么样的对象放入到容器中
dao类,service类,contrler类,工具类
(1)使用xml配置文件,使用<bean>
(2)注解
spring中的对象默认都是单例的,在容器中这个名称的对象只有一个
不放入到spring容器中的对象
1、实体类对象,实体类对象来自数据库的
2、servlet、listener(监听类),filter(过滤)等(这些应该放在TomCat中)
使用spring框架的步骤
1、加入依赖
<!-- Spring依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
2、创建类:接口,实现类,没有接口的类
3、创建spring的配置文件,使用<bean>声明对象
4、我们使用容器中的对象,通过ApplicationContext接口和他的实现类ClassPathXmlApplicationContext的方法getBean()
核心技术
ioc:控制反转
1、理论、思想、概念:指导开发人员在容器中,代码之外管理对象,给属性赋值,管理依赖
2、ioc技术实现使用的是di(依赖注入):开发人员在项目中只需要提供对象的名称,对象的创建、查找、赋值由容器内部自己来实现
3、spring使用di的技术,底层使用的是反射机制
4、di给属性赋值
1、set注入:spring调用类的set方法实现属性赋值
(1)简单类型的set注入<property name="属性名" value="属性的值"/>
(2)引用类型的set注入<property name="属性名" ref="bean的id"/>
2、构造注入:spring调用有参数的构造方法
(1)<constructor-arg> name属性,那么表示构造方法的形参名
(2)<constructor-arg>的index属性,表示构造方法形参的位置,从0开始
3、自动注入
由spring根据某些规则,给引用类型完成赋值,常用的是byName,byType
1、byName:按名称注入,java类中引用类型的属性名和spring容器中bean的【id】一样,数据类型一样。这样的bean赋值给引用类型
2、byType :按类型注入 ,java类中引用类型的是 【数据类型】和spring容器中bean的 【class】是同源关系的,这样的bean能够赋值给引用类型
5、常用注解
1、@Component,创建对象
2、@Repository,创建dao对象,用来访问数据库
3、@Service,创建Service对象,处理业务逻辑,可以有事务功能
4、@Controller,创建控制器对象,接收请求,显示处理结果
5、@Value,简单类型的属性赋值
6、@Autowired,sping框架中引用类型的赋值注解,支持byname,byType,默认是byType
7、@Resources,jdk中的注解,使用自动注入给引用类型赋值,支持byName,byType,默认是byName
8、注解的使用步骤
1、spring-context,间接加入spring-aop
2、在类中加入注解
3、在spring配置文件中,加入组件扫描器标签 <context:component-scan base-package="包名"/>
6、ioc能够实现解耦合
ioc能够实现业务对象之间的解耦合,例如service和dao对象之间的解耦合
aop:面向切面编程
底层是动态代理
1、jdk动态代理
2、要求:目标类必须实现接口
2、使用cjlib动态代理
使用第三方的工具库,实现代理对象的创建
要求:目标类必须能够继承,不能是final
原理:就是继承,子类就是代理
aop
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、point cut :切入点,是一个或多个JoinPoint的集合,表示切面功能执行位置
3、advice:通知,也叫增强,表示切面执行时间,在方法前,方法后等等
aspectj框架的使用
1、表示切面的执行时间,使用
1、@Before前置通知,在目标方法之前执行切面的功能
2.@AfterReturning后置通知。在目标方法之后执行的,能够获取到目标方法的返回值
3.@Around环绕通知。在目标方法前和后都能增强功能,控制目标方法的的访问,修改返回值
4.@AfterThrowing异常通知,在目标方法抛出异常后执行的通知
5.@After最终通知, 总是会被执行的代码
6.@Pointcut定义和管理切入点的辅助注解
7.代理的使用方式
1.如果目标类有接口,框架使用jdk动态代理
2.如果目标类没有接口,默认使用的cglib动态代理
3.有接口也可以强制使用cglib动态代理
2、表示切面位置的切面表达式:execution(访问修饰符 返回值 包名.类名.方法名称(方法的参数) 异常)
spring整合mybatis
spring整armybatis日一整合的想法:使用spring的ioc核心技术,把mybatis框架中使用的对象交给spring统一创建和管理。spring是容器,存放你项目中要使用的各种对象。例如Service对象,Dao对象,工具类对象等等
交给spring的myabtis对象
1.数据源DataSource,使用阿里公司的Druid连接池
2.SqlSessionFactory对象,使用的SqISessionFactoryBean在内部创建的SqISessionFactory
3.Dao代理对象,使用的MapperScannConfigure,在这个类的内部,调用getMapper() ,创建接口的Dao对象
0 条评论
下一页