Spring

第一章 快速入门

 1.Spring的概述
	Spring是分层的JavaSE/EE应用一站式的轻量 开发级开源框架,主要以控制反转和面向切面为主;学习Spring的好处有:
	方便解耦,简化开发
	AOP编程支持
	方便程序测试	
	解耦:降低耦合度,耦合度为Java中对象中的调用时会出现相同的变量或相同的函数调用,使用Spring框架可以降低其耦合度。
	AOP(面向方面编程)针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。

第二章 Spring IoC容器

  1. IoC的概述
    Ioc(控制反转)
    控制反转,就是把原先我们代码里面需要实现的对象创建、依赖的代码,反转给容器来帮忙实现。那么必然的我们需要创建一个容器,同时需要一种描述来让容器知道需要创建的对象与对象的关系。
     ●谁控制谁,控制什么:传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对 象的创建;谁控制谁?当然是IoC 容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。
    ●为何是反转,哪些方面反转了:有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。
    有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是 松散耦合。
    在Spring所有的容器的为Bean。
  2. beanFactory和ApplicationContext
    Application Context 是 spring 中较高级的容器。和 BeanFactory 类似,它可以加载配置文件中定义的 bean,将所有的 bean 集中在一起,当有请求的时候分配 bean。 另外,它增加了企业所需要的功能,比如,从属性文件中解析文本信息和将事件传递给所指定的监听器。这个容器在 org.springframework.context.ApplicationContext interface 接口中定义。
    ApplicationContext 包含 BeanFactory 所有的功能,一般情况下,相对于 BeanFactory,ApplicationContext 会更加优秀。当然,BeanFactory 仍可以在轻量级应用中使用,比如移动设备或者基于 applet 的应用程序。
    最常被使用的 ApplicationContext 接口实现:
    • FileSystemXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,你需要提供给构造器 XML 文件的完整路径。
    • ClassPathXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,你不需要提供 XML 文件的完整路径,只需正确配置 CLASSPATH 环境变量即可,因为,容器会从 CLASSPATH 中搜索 bean 配置文件。
    • WebXmlApplicationContext:该容器会在一个 web 应用程序的范围内加载在 XML 文件中已被定义的 bean。
    实例:
    public class HelloWorld {
    private String message;
    public void setMessage(String message){
    this.message = message;

}
public void getMessage(){
System.out.println("Your Message : " + message);
//System.out.println(“你定义的数字为”+x);
}
}

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainApp {
public static void main(String[] args) {

	//创建一个容器
	ApplicationContext context = new ClassPathXmlApplicationContext("one.xml");
	//从容器中获取对象
	HelloWorld obj = (HelloWorld) context.getBean("helloWorld");//new helloWorld一个对象进行参数传递
	//调用对象中的方法
	obj.getMessage();//得到所传参数信息
	
	obj.setMessage("面朝大海,春暖花开,1");//相当于建立一个对象及赋值
	
	obj.getMessage();
}

}

<?xml version="1.0" encoding="UTF-8"?>

<bean id="helloWorld" class="com.one.HelloWorld">
	<!-- 将id为类中的变量message进行赋出值 -->
	<property name="message" value="Hello World!" />
</bean>

注意:在容器中配置xml文件时ClassPathXmlApplicationContext为直接获取文件名,且每个bean容器的id是唯一的,class为你所需要配置存入容器的绝对路径,你的id名需要和你存入容器的id名相同。
3. bean的装配

spring注入是指在启动Spring容器加载时对变量进行赋值。可以通过类set方法进行注入,以及构造函数的方式。
在这里插入图片描述
**在这里插入图片描述

第二章 Spring AOP 的实现

Spring AOP的概述
AOP(面向方面编程或面向切面编程)
AOP则是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。
面向切面编程则是希望能够将通用需求功能从不相关的类当中分离出来,能够使得很多类共享一个行为,一旦发生变化,不必修改很多类,而只需要修改这个行为即可。
AOP的本质是在一系列纵向的控制流程中,把那些相同的子流程提取成一个横向的面
我们把纵向流程画成一条直线,然把相同的部分以绿色突出,如下图左,而AOP相当于把相同的地方连一条横线,如下图右,这个图没画好,大家明白意思就行。
在这里插入图片描述在这里插入图片描述
与OOP不同之处在于OOP是面向对象的编程,处理的为单一继承关系或抽象接口的实现,如果两个类中存在相同的方法,那么造成代码复用。而AOP的思想则在于把相同的方法抽取出来进行封装、维护。
AOP联盟定义的AOP体系结构为
在这里插入图片描述
层次3:语言和开发环境

基础:可以视为待增强对象
切面:通常包含对于基础的增强应用
配置:指配置环境或编织配置,将基础和切面结合起来,从而实现对目标对象的编织实现
Spring使用Java语言来实现增强对象和切面,并为这两者提供配置环境;对于编织配置,可以使用IoC容器来完成,而Ioc恰恰是Spring的强项。

层次2:面向方面系统

面向方面系统为上层的语言与开发环境提供支持,将基础、切面和配置封装成面向方面中的逻辑模型。

层次1:底层编织实现模块

将编织逻辑进行实现的技术。
前文所述的两种动态代理技术就是在这个层面进行应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值