栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring(持续更新)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring(持续更新)

Spring spring的xml配置




IOC

IoC Inversion of Control : 控制反转,是一个理论,一个指导思想。指导开发人员如何使用对象,管理对象的。把对象的创建,属性赋值,对象的生明周期都交给代码之外的容器管理。

控制和反转
  • 控制:对象创建,属性赋值,对象声明周期管理

  • 反转:把开发人员管理对象的权限转移给了代码之外的容器实现,有容器完成对象的创建。

  • 正转:开发人员在代码中,使用new构造方法创建对象,开发人员掌握了对象的创建,属性赋值,对象从开始到销毁的全部过程。开发人员有对 对象 全部控制。

通过容器,可以使用容器中的对象吗(容器已经创建了对象,对象属性赋值了,对象也组装好了)

Spring就是一个容器,可以管理对象,创建对象,给属性赋值

IoC的技术实现

DI (依赖注入):Dependency Injection,缩写是DI,是IoC的一种技术实现,程序只需要提供要使用的对象的名称就可以,对象如何创建,如何从容器中查找,获取都由容器内部自己实现。

依赖名词:比如说ClassA类使用了ClassB的属性或方法,叫做ClassA依赖ClassB,

public class ClassB{

     public void createOrder(){}

}

public class ClassA{

     //属性
     private ClassB b = new ClassB();
     
     public vouid buy(){
     
        b.createOrder();
        
     
     }

}

执行ClassA的buy()

ClassA a = new ClassA();
a.buy();

Spring框架使用的DI实现IoC

​ 通过spring框架,只需要提供使用的对象名词就可以,从容器中获取名称对应的对象。

​ spring底层使用的 反射机制, 通过反射创建对象,给属性。

spring包的含义

spring的核心包:spring-core

单元测试
//创建工厂对象
public void test(){
	//读取项目内部的配置文件信息的工厂信息
	ApplicationContext c = new ClassPathXmlApplicationContext("appcationContext");
	UserDao ud=(UserDao) c.getBean("userDao");
	ud.add();
}

DI

依赖注入,需要有IOC的环境配置

注入方式
  • set
  • 构造器
  • 注解
构造器

需要有对应注入参数的有参构造函数


	
	

SET

需要无参的构造函数


	
	

注解注入

需要开启注解,不然无法识别

  • @Service :用于控制服务层的bean

  • @Controller:用于控制注册控制层的bean

  • @Repository:用于注册dao层的bean

  • @Component:可以用于注册所有的bean

//开启注解

@Autowired+@Quelifier≈@Resource

Autowired通过类型进行注入 默认时必须存在要注入的类型,如果允许未null,那么可以结合配置required为false

Quelifier通过将@Qualifier注解与我们想要使用的特定spring bean的名称一起进行装配,Spring框架就能从多个相同类型并满足装配要求的bean中找到我们想要的

Resource通过名称进行注入,默认是当前类型的名称,也可以自己定义 name=""

AOP面向切面编程

AOP是OOP的延续,是软件开发的一个热点,也是Spring框架中的一个重要内容,是函数编程的一种衍生泛型。

利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

经典应用:事务管理、性能监视、安全检查、缓存、日志等

String AOP 使用纯Java实现,不需要专门的编译过程和类加载器,再运行期间通过代理方式向目标类织入增强代码。

Aspect|是一个基于java语言的AOP框架,Spring2.0开始,Spring AOP引入对Aspect的支持,Aspect拓展了Java语言,提供了一个专门的编译器,再编译时对代码进行织入。

AOP开发中相关术语

详解,要想学习Aspect完成AOP开发, 必须了解AOP相关术语的含义。

  • JoinPoint (连接点) :所谓连接点是指那些被拦截到的点,连接点指的是类中的方法。
  • Pointcut (切入点) :指要对哪些“连接点”进行拦截,实际被增强的方法称为切入点。
  • Advice (通知/增强) : 指拦截到”连接点”之后要做的事(就是增强的代码),通知分为前置通知、后置通知、环绕通知、最终通知、异常通知。
  • Introduction (引介) :是一种特殊的通知,作用在类层面(了解)
  • Target (目标) :代理的目标对象,被增强类的对象
  • Weaving (织入) :指把增强应用到目标对象来创建新的代理对象的过程。
  • Proxy (代理) : -个类被AOP织入增强后,产生-个代理对象。
  • Aspect (切面) :是切入点和通知(引介)的结合。

代理=目标(连接点,切入点) + 切面(通知/增强) + 织入

代理模式

就是我再生成一个代理类,去代理UserController的saveUser()方法,代码大概就长这样:

class UserControllerProxy {
    private UserController userController;

    public void saveUser() {
        checkAuth();
        userController.saveUser();
    }
}

这样在实际调用saveUser()时,我调用的是代理对象的saveUser()方法,从而实现了鉴权。

代理分为静态代理和动态代理,静态代理,顾名思义,就是你自己写代理对象,动态代理,则是在运行期,生成一个代理对象。

开启aop注解





    

在切面层配置注解

@Component

@Aspect

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/463073.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号