Spring

spring的作用:
  • spring的主要作用就是解耦,即降低代码间接耦合度;
  • spring将应用程序中的代码根据功能分为了两部分:主业务逻辑与系统服务;
  • spring本身提供有访问数据库的JDBC模板,还可接入ORM框架。
spring的特点:
  • Ioc :

    将原本有代码操纵的对象操控权,交由第三方容器,即反转给了第三方容器。这种对象的依赖关系的管理方式称为IoC;

    Ioc是一种思想, 是一个概念,其实现方式有许多种;比较著名的有两种:DL(依赖查找),DL(依赖注入)。

    Ioc的实现有两种:基于xml的实现和基于注解的实现

  • Aop :

    Aop:Aspect Oriented Programming ,面向切面的编程。解决的是“系统级服务”和“主业务逻辑”间的耦合的问题。

    Aop是一种思想,一种解决方案,一套规范,其实现方式有很多,其中最著名的有 Spring、AspectJ。

    AoP的实现有两种:基于xml的实现和基于注解的实现。

    名词解释

    • 切面:就是交叉业务逻辑,也就是对主业务逻辑进行增强的部分:通知、顾问。(顾问可以理解为是复杂的通知)

    • 织入:将切面切入到主业务逻辑的过程。

    • 连接点:可以被增强的目标方法;

    • 切入点:真正被增强的连接方法,指定织入的位置。

      连接点不一定是切入点,切入点一定是连接点。
      切入点表达式:execution(访问权限 返回类型 全限定方法名(参数列表) 抛出的异常)
      其中返回类型与方法名是不能省略的。

      插入通知的xml实现:

      
      	<aop:config>  //进行AoP配置
      		
      		<aop:aspect ref="myconfig">    //配置切面
      		
      			  //声明通知类型  插入的切面的方法  以及切入点
      			  <aop:after method="ha" pointcut="execution(void org.example.service.Tests.hhh())"/>
        	    </aop:aspect>
      	</aop:config>
      		
      

      插入事务通知(顾问)的xml实现:

      
      		<!--注册事务管理器-->
      	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
                <property name="dataSource" ref="dataSource"></property>
         </bean>
         
         <!--注册事务通知-->
      	 <tx:advice id="txAdvice" transaction-manager="transactionManager">			
        		   <tx:attributes>
        		   	 //name属性,表示与事务属性相关联的方法名(业务方法名),对切入点进行细化
          		    <tx:method name="insert" isolation="DEFAULT" propagation="REQUIRED" rollback-for="Exception"/>
      	    </tx:attributes>
      	</tx:advice>
      	
      	<!-- AoP配置-->
      	<aop:config>
      	    <aop:advisor advice-ref="txAdvice" pointcut="execution(* *..*.*(**))"></aop:advisor>
      	</aop:config>
      	```
      
      
      
spring的实现:
  • BeanFactory和ApplicationContext是Spring的两大核心接口,而其中ApplicationContext是BeanFactory的子接口。它们都可以当做Spring的容器,Spring容器是生成Bean实例的工厂,并管理容器中的Bean。在基于Spring的Java EE应用中,所有的组件都被当成Bean处理,包括数据源,Hibernate的SessionFactory、事务管理器等。
  • 生活中我们一般会把生产产品的地方称为工厂,而在这里bean对象的地方官方取名为BeanFactory,直译Bean工厂(com.springframework.beans.factory.BeanFactory),我们一般称BeanFactory为IoC容器,而称ApplicationContext为应用上下文。
  • Spring的核心是容器,而容器并不唯一,框架本身就提供了很多个容器的实现,大概分为两种类型:
    一种是不常用的BeanFactory,这是最简单的容器,只能提供基本的DI功能;
    一种就是继承了BeanFactory后派生而来的ApplicationContext(应用上下文),它能提供更多企业级的服务,例如解析配置文本信息等等,这也是ApplicationContext实例对象最常见的应用场景。

下面是Application Context的实体类的几种构造方法:

ApplicationContext常用实现类作用
AnnotationConfigApplicationContext从一个或多个基于java的配置类中加载上下文定义,适用于java注解的方式。
FileSystemXmlApplicationContext-从文件系统下的一个或多个xml配置文件中加载上下文定义,也就是说系统盘符中加载xml配置文件。-
ClassPathXmlApplicationContext从类路径下的一个或多个xml配置文件中加载上下文定义,适用于xml配置的方式。
XmlWebApplicationContext –-从web应用下的一个或多个xml配置文件加载上下文定义,适用于xml配置方式。-
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值