zoukankan      html  css  js  c++  java
  • Spring:

    单纯的spring框架已经全部过了一遍了,现在整理一下里面涉及到的要点:

    1. IOC控制反转与依赖注入
    2. (基于动态代理原理的)AOP面向切面编程  
      拓展bean
      事务处理
    3. 注解方式开发与XML

    一.IOC原理及应用

      传统方式在创建对象时一般采用工厂模式:目的是减少接口类与实现类之间的耦合关系,但是增加了接口与工厂的耦合(修改代码时需要修改工厂类中的接口,不符合闭包原则)。解决方法就是“工厂+反射+配置文件”了。工厂中配置方法,XML中配置类,反射捕捉到需求就创建新类,这就是IOC的主要原理.

          

    1.自定义工厂类

    框架中自定义的工厂类 ApplicationContext有两个实现类

    • ClassPathXmlApplicationContext  :加载类路径下的配置文件
    • FileSystemXmlApplicationContext   :加载文件系统下的配置文件

     需要在XML中配置bean。

    <bean>标签的id和name的配置
      id     使用了约束中的唯一约束。里面不能出现特殊字符的。
    
      name   没有使用约束中的唯一约束(理论上可以出现重复的,但是实际开发不能出现的)。里面可以出现特殊字符。

     class 定义的类的位置 Spring和Struts1框架整合的时候 <bean name=”/user” class=””/> Bean的生命周期的配置(了解) init-method Bean被初始化的时候执行的方法 destroy-method Bean被销毁的时候执行的方法(Bean是单例创建,工厂关闭)

       Bean的作用范围的配置(重点)

    l  scope                            :Bean的作用范围

      singleton          :默认的,Spring会采用单例模式创建这个对象。

      prototype         :多例模式。(Struts2和Spring整合一定会用到)

      request              :应用在web项目中,Spring创建这个类以后,将这个类存入到request范围中。

      session              :应用在web项目中,Spring创建这个类以后,将这个类存入到session范围中。

      globalsession    :应用在web项目中,必须在porlet环境下使用。但是如果没有这种环境,相对于session。

      

    创建类的方式:默认创建(无参构造),静态工厂(factory-method),实例工厂(先实例化工厂然后factory-bean+factory-method)

    2.属性注入:

      构造方法注入 

      set方式注入

    ps:设置对象类型的属性使用ref(加bean的id)

      P空间属性注入

      spel属性注入(可以注入表达式)

    3.集合属性注入

    <!-- Spring的集合属性的注入============================ -->
    	<!-- 注入数组类型 -->
    	<bean id="collectionBean" class="com.itheima.spring.demo5.CollectionBean">
    		<!-- 数组类型 -->
    		<property name="arrs">
    			<list>
    				<value>王东</value>
    				<value>赵洪</value>
    				<value>李冠希</value>
    			</list>
    		</property>
    		
    		<!-- 注入list集合 -->
    		<property name="list">
    			<list>
    				<value>李兵</value>
    				<value>赵如何</value>
    				<value>邓凤</value>
    			</list>
    		</property>
    		
    		<!-- 注入set集合 -->
    		<property name="set">
    			<set>
    				<value>aaa</value>
    				<value>bbb</value>
    				<value>ccc</value>
    			</set>
    		</property>
    		
    		<!-- 注入Map集合 -->
    		<property name="map">
    			<map>
    				<entry key="aaa" value="111"/>
    				<entry key="bbb" value="222"/>
    				<entry key="ccc" value="333"/>
    			</map>
    		</property>
               </bean>    
    

      

          在加载配置文件的时候,加载多个配置文件

          在一个配置文件中引入多个配置文件(在其中一个里配置其他的)

     

    4.基于注解的IOC开发:

      1.引入aop的包

      2.引入context约束(可以直接扫父包:com.itheima.spring=扫描父包下面的所有子包)

      <context:component-scan />

      3.使用注解开发

    l  @Component(修饰一个类并交给spring管理):定义Bean

    • @Controller    :WEB
    • @Service        :Service
    • @Repository  :DAO层           (效果一致)

    属性注入:(类中有set方法,注解加到方法上;没有set方法,注解添加到属性上)

    • 普通属性        :@Value
    • 对象属性        :@Resource

      @Autowired   :按类型注入属性,

       @Autowired+@Qulifier或者@resourse:按名称

    作用范围@Scope:

    • * singleton: 单例
    • * prototype: 多例

    生命周期

    XML方式和注解方式比较

      XML方式        :适用性更广,结构更加清晰。

      注解方式        :适用类是自己定义,开发更方便。

      XML和注解的整合开发:XML定义类

                 注解属性注入

    二. AOP原理与应用

     原理:动态代理

  • 相关阅读:
    聊聊和关系型数据库相关的一些概念
    Spring-MongoDB 关键类的源码分析
    Studio 3T 如何使用 Query Builder 查询数据
    MySQL error : Deadlock found when trying to get lock; try restarting transaction
    The java.util.concurrent Synchronizer Framework笔记
    JDK 8
    MongoDB Data Model 浅谈
    Java 泛型分析
    DCL(双检锁)的失效:现实与初衷的背离
    vue之虚拟dom
  • 原文地址:https://www.cnblogs.com/lvoooop/p/10738667.html
Copyright © 2011-2022 走看看