Spring初识

Spring初识

spring框架的组成模块

在这里插入图片描述

模块介绍:

1,Data access/Integration(数据访问/集成)

JDBC:提供一个JDBC的朝向曾,大幅度减少开发过程中对数据库操作的编码。

ORM:对流行对象关系映射的API。包括JPA、JDO、Hibernate 和 iBatis 提供了的集成层。

OXM:提供一个支持对象/XML映射的抽象层,如JAXB、Castor、XMLBeans、JiBX和XStream

JMS:指Java消息服务,包含的功能为生产和消费的信息。

Transactions事务模块:支持编程和声明式事务管理实现特殊接口类.

2,Web模块

Web:提供了基本的Web开发集成特性,如:文件上传功能,select监听器的Ioc容器初始化以及Web应用上下文。

Servlet:包括SpringMVC实现web应用程序。

Struts:包含支持类内的Spring应用程序,集成了经典的Struts Web层。

Portlet:提供了在Portlet环境中使用MVC的实现。类似Web-Servlet模块功能。

3,Core Container(核心容器)

Beans:提供BeanFactory,时工厂模式的经典实现,Spring将管理对象成为Bean,

Core核心:提供Spring框架的基本组成部分,包括Ioc和DI功能。

Context上下文模块:建立在核心和Bean模块基础之上。他是访问dinginess和配置任何对象的媒介。
ApplicationContext接口时上下文模块的焦点。

ExpressionLanguage:是运行时查询和操作对象的图的强大的表达式语言。

4,其他模块

AOP:提供面向切面编程实现,允许定义方法拦截器和切入点,将代码按照功能进行分离,以降低耦合性。

Aspects:提供与AspectJ的集成,是一个功能强大且成熟的面向切面编程(AOP)框架。

Instrumentation:提供了类工具的支持和类加载器的实现,可以在特定的应用服务器中使用。

Test:支持Spring组件,使用JUnit或TestNG框架测试。

Spring框架依赖jar包

​ 1,spring-core-5.2.2.RELEASE.jar:核心jar包,是其他组件的基本核心,包含Spring框架的基本核心工具类。

​ 2,spring-beans-5.2.2.RELEASE.jar:包含spring框架管理Bean和配置文件的基本功能。

​ 3,spring-context-5.2.2.RELEASE.jar:Spring框架核心包的扩展包,包含大量工具类。

​ 4,spring-expression-5.2.2.RELEASE.jar:Spring框架中一个强大的表达式解析语言,支持在运行时动态的解析表达式给对象赋值等功能。

核心概念

IoC—Inversion of Control

IoC—控制反转,把对资源的控制权反转过来。是一种理念。

​ 定义:IoC 是指在程序开发中,实例的创建不再由调用者管理,而是由 Spring 容器创建。Spring 容器会负责控制程序之间的关系,而不是由程序代码直接控制,因此,控制权由程序代码转移到了 Spring 容器中,控制权发生了反转,这就是 Spring 的 IoC 思想。

Dependency Injection(DI)—依赖注入

​ 其表示将依赖的对象注入需要的类中,是IoC设计思想的一种具体实现方式。

Spring提供了两种IoC容器
BeanFactory

​ BeanFactory是基础类型的Ioc容器,它由org.springframework.beans.facytory.BeanFactory 接口定义。BeanFactory是一个管理bean的工厂,负责初始化各种bean,并调用他们的声明周期方法

​ BeanFactory接口由多个实现类,最常见的是XmlBeanFactory—根据XML配置文件种的定义装配Bean的。

ApplicationContext

​ ApplicationContext是BeanFactory的子接口,已成为应用上下文,不仅提供了BeanFactory的所有功能,还添加了对i18n(国际化),资源访问,时间传播等方面的支持。

​ 其常用的两个实现类:

1)ClassPathXmlApplicationContext

​ 从类路径ClassPath种寻找指定的XML配置文件,找到并装在完成ApplicationContext的实例化工作。

ApplicationContext context=new ClassPathXmlApplicationContext(String configLocation);
//configLocation参数用于指定spring配置文件的名称和位置

2)FileSystemXmlApplicationContext

​ 该类从指定的文件系统路径中寻找指定的xml配置文件,找到并装在完成ApplicationContext的实例化工作。

ApplicationContext applicationContext = new FileSystemXmlApplicationContext(String configLocation);
//FileSystemXmlApplicationContext 不再从类路径中读取配置文件,而是通过参数指定配置文件的位置,它可以获取类路径之外的资源

注意

​ 1,BeanFactory 和 ApplicationContext 都是通过 XML 配置文件加载 Bean 的。

​ 2,二者的主要区别在于,如果 Bean 的某一个属性没有注入,则使用 BeanFacotry 加载后,在第一次调用 getBean() 方法时会抛出异常,而 ApplicationContext 则在初始化时自检,这样有利于检查所依赖的属性是否注入。

AOP–aspect Oriented Programming

​ -----面向切面编程,即AOP把对象或固定的流程切开,找到其中的公共行为,并将其进行提取同意处理的一种思想。其依赖动态代理实现。

一些基本概念

​ 1,Aspect(切面):一个模块化的横切逻辑(或称横切关注点),可能会横切多个对象。

​ 2,Advice(增强处理):切面在某个特定连接点上执行的代码逻辑。

​ 3,join Point(连接点):程序执行中的某个具体的执行点。

​ 4,pointcut(切入点):对连接点的特征进行描述,可以使用正则表达式,增强处理和一个切入点表达式相关联,并在与这个切入点匹配的某个连接点上运行。——入口

​ 5,TargetObject(目标对象):被一个或多个切面增强的对象。

​ 6,AOP proxy(AOP代理):由一个AOP框架所创建的对象,实现执行增强处理方法等功能。

​ 7,Weaving(织入):将增强处理连接到应用程序中的类型或对象上的过程。

​ 8,增强处理类型:前置增强,后置增强,环绕增强,抛出异常增强,最终增强。

使用AOP方式进行处理代码
/**
 * 顾客类
 */
public class Client {
    public void eat(){
        System.out.println("吃饭----吃完了");
    }
}
/**
 * 服务员类
 */
public class Waiter {
    public void beforeWaiter(){
        System.out.println("请点餐");
    }
    public void afterWaiter(){
        System.out.println("请买单");
    }
}
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.2.xsd">
	<!--目标bean-->
    <bean id="client" class="com.company.aop.Client" />
    <!--切面bean代理-->
    <bean id="waiter" class="com.company.aop.Waiter"/>
<!--    配置切面-->
    <aop:config>
<!--        定义切入点,从谁的哪个方法进入-->
<!--        从eat方法进入-->
        <aop:pointcut id="pointcut" expression="execution(public void eat())"/>
<!--        引用包含增强方法bean  //引用代理类-->
        <aop:aspect ref="waiter">
<!--            前置增强   //引用代理类中的方法    放置pointcut切入点之前-->
            <aop:before method="beforeWaiter" pointcut-ref="pointcut"/>
<!--           后置增强    //引用代理类中的方法     放置pointcut切入点之后-->
            <aop:after-returning method="afterWaiter" pointcut-ref="pointcut"/>

        </aop:aspect>
    </aop:config>

</beans>
 	//测试类
	@Test
    public void Test3(){
        ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
        Client client=(Client)context.getBean("client");
        client.eat();
    }

解释配置文件中一些标签的作用及用法:

​ 1,与AOP相关的配置都放在aop:config标签中。

​ 2,aop:pointcut表示切入点,id属性为切入点的名称,expression属性为该切入点的表达式,execution是切入点的只是符,其中放置表达式,如下:

​ 1)public * 方法名(参数): * 表示匹配所有类型的返回值。

​ 2)public void *(参数) : * 表示匹配所有方法名。

​ 3)public void 方法名(…): …表示匹配任意参数个数和类型。

​ 4)* com.service. * . * (…) :匹配com.service包下所有类的所有方法。

​ 5)* com.service. .* . * (…) :匹配com.service包及其子包下所有类的所有方法。

​ 3,aop:aspect引用增强的Bean,ref属性指定增强bean的名称。

​ 4,把增强处理插入切入点的过程成为织入。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值