Java框架——spring

1.什么是Spring

1.是一个框架,核心技术是ioc、aop,实现解耦合

2.spring是一个容器,容器中存放的是java对象,需要做的是把对象放入到容器中

2.怎么使用Spring

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

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

3.我们在程序中从容器里,获取要使用到的对象

3.什么样的对象放入容器中

1.dao类、service类、controller类、工具类

  • 1.使用xml配置文件,使用标签
  • 2.使用注解

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

4.不放入到spring容器中的对象

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

2.servlet,listener,filter等

5.使用spring框架的步骤

1.加入依赖

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

3.创建spring的配置文件,使用bean标签声明对象

4.我们使用容器中的对象,通过ApplicationContext接口和它的实现类ClassPathXmlApplicationContext的方法getBean()

6.Spring核心技术

1.Ioc控制反转

  • 1.理论、思想、概念。:指导开发人员在容器中,代码之外管理对象,给属性赋值,管理依赖。

  • 2.ioc技术的实现使用的是DI(Dependency Injection)依赖注入,只需要在程序中提供要使用的对象名称就可以,对象的创建、赋值、查找都由容器内部实现。

  • 3.spring使用的DI技术,底层使用的是反射机制。

  • 4.di给属性赋值

    • 1.set注入:spring调用类的set方法实现属性赋值

      • 1.简单类型的set注入
      • 2.引用类型的set注入
    • 2.构造注入:spring调用有参构造

      • 1.的name属性,name表示构造方法的形参名。
      • 2.的index属性,index表示构造方法形参的位置,从0开始。
    • 3.自动注入

      • 0.由spring根据某些规则,给引用类型完成赋值,常用的有byName、byType
      • 1.byName按名称注入:java类中引用类型的属性名和spring容器中的bean标签的id值一样,数据类型一样,这样的bean赋值给引用数据类型。
      • 2.byType按类型注入:java类中引用类型的【数据类型】和spring容器中bean的【class】是同源的关系,这样的bean能够赋值给引用类型。
  • 5.常用注解

    • 1.@Component创建对象

    • 2.@Respotory创建dao对象,用来访问数据库的

    • 3.@Service创建Service对象,处理业务逻辑的,可以有事务功能

    • 4.@Controller创建控制器对象的,接受请求,显示处理结果的

    • 5.@Value简单类型的属性赋值

    • 6.@Autowired—spring框架中引用类型的赋值注解,支持byName、byType,默认是byType

    • 7.@Resource—jdk中的注解,使用自动注入给引用类型赋值,支持byName、byType,默认是byName

    • 8.注解的使用步骤

      • 1.加入依赖:spring-context,间接加入spring-aop
      • 2.在类中加入注解
      • 3.在spring的配置文件中,加入组件扫描器标签<context:component-scan base-package=“包名”>
  • 6.ioc能实现解耦合

    • ioc实现的是业务对象之间的解耦合,例如service与dao之间的解耦合

2.aop面向切面编程

  • 1.底层是动态代理

    • 1.jdk动态代理

      • 1.使用jdk反射包中的类实现创建代理对象的功能
      • 要求:目标类必须实现接口
    • 2.cglib动态代理

      • 1.使用第三方的工具库,实现代理对象的创建
      • 要求:目标类必须能继承,不能是final
      • 原理:就是继承,子类就是代理
  • 2.aop:看做是动态代理的规范化,把实现动态代理的步骤进行了一个规范、定义。

  • 3.aop作用:

    • 1.在目标类不修改源代码的情况下,增加功能
    • 2.减少重复代码
    • 3.专注业务功能的实现
    • 4.解耦合:业务功能和日志、事务这些非业务功能的耦合
  • 4.什么时候考虑使用aop技术

    • 1.当你要给一个系统中存在的类修改功能,原有的类功能不完善,但是你还有源代码,使用aop就增加功能。
    • 2.你要给项目中的多个类,增加一个相同的功能,使用aop
    • 3.给业务方法增加事务,日志输出
  • 5.aop的实现框架

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

    • 2.aspectj框架

      • 1.使用注解可以实现aop的功能
      • 2.使用xml配置文件中的标签实现aop功能
  • 6.aop中概念

    • 1.aspect:切面,表示给业务方法增加的功能,一般日志输出,事务,权限检查等是切面
    • 2.pointCut:切入点,是一个或者多个JoinPoint的集合,表示切面功能执行的位置。
    • 3.advice:通知,也叫增强,表示切面执行时的时间,在方法前、后。
  • 7.aspectj框架的使用

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

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

      • 2.@AfterReturning后置通知,在目标方法执行之后执行的,能获取到目标方法的返回值

      • 3.@Around环绕通知,在目标方法前和后都能增强功能,控制目标方法的访问,修改返回值。

      • 4.@AfterThrowing异常通知,在目标方法抛出异常之后执行

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

      • 6.@Pointcut定义和管理切入点的辅助注解

      • 7.代理的使用方式

        • 1.如果目标类有接口,框架使用jdk动态代理
        • 2.如果没有,默认使用cglib动态代理
        • 3.有接口也可以强制使用cglib动态代理
    • 2.表示切面位置的切入点表达式:execution(访问修饰符 返回值 包名 类名 方法名(方法参数) 异常)

3.spring整合mybatis

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

  • 2.交给spring的mybatis对象

    • 1.数据源DataSource,使用阿里的Druid连接池
    • 2.SqlSessionFactory对象,使用的SqlSessionFactoryBean在内部创建的SqlSessionFactory
    • 3.Dao代理对象,使用的MapperScanConfigure,在这个类的内部,调用getMapper(),创建接口的Dao对象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值