• Spring框架学习之IOC(一)


    Spring框架学习之IOC

    先前粗浅地学过Spring框架,但当时忙于考试及后期实习未将其记录,于是趁着最近还有几天的空闲时间,将其稍微整理一下,以备后期查看。

    Spring相关知识

    spring是J2EE应用程序框架,是轻量级的IoC和AOP的容器框架,主要是针对javaBean的生命周期进行管理的轻量级容器。可单独使用,通常也与其他框架整合使用,例如SSH、SSM。

    IOC:控制反转

      控制权由对象本身转向容器;由容器根据配置文件去创建实例并创建各个实例之间的依赖关系。等同于DI依赖注入

    AOP:面向切面

    IOC

    下面举个例子HelloWOrld:

     1 package per.zww.spring.beans;
     2 
     3 public class HelloWorld {
     4     public HelloWorld() {
     5         // TODO Auto-generated constructor stub
     6         System.out.println("Constractor...");
     7     }
     8     
     9     private String name;
    10     
    11     public void setName(String name) {
    12         System.out.println("setter...");
    13         this.name = name;
    14     }
    15     
    16     public void hello() {
    17         System.out.println("hello:"+name);
    18     }
    19 }

    如果我们不使用IOC而调用类里面的hello()的话,我们的Main类会这样写:

    1 public class Main {
    2     public static void main(String[] args) {
    3         HelloWorld helloWorld=new HelloWorld();
    4         helloWorld.setName("zhaoww");
    5         helloWorld.hello();
    6     }
    7 }

    而当我们使用IOC,则不需要自行new一个对象,也不需setName。只需要这样写:

    public class Main {
        public static void main(String[] args) {
            //创建IOC容器,类路径加载配置文件
            ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
            //获取bean,也可用其他方法
            HelloWorld helloWorld2= (HelloWorld) applicationContext.getBean("helloWorld");
            helloWorld2.hello();
        }
    }

    当然我们还是要配置xml文件的,配置文件如下:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
     5     
     6     <!-- 配置bean -->
     7     <bean id="helloWorld" class="per.zww.spring.beans.HelloWorld">
     8         <property name="name" value="zhaoww"></property>
     9     </bean>
    10 
    11 </beans>

    具体来看:
    Spring提供两种的IOC容器
    1.BeanFactory
    2.ApplicationContext [基本都用这个]
      是BeanFactory的子接口

    注入方式
    1.属性注入 最常用
    2.构造器注入
        默认index顺序
        同时也可通过指定参数类型以区分重载的构造器
    3.工厂注入[不常使用]

    bean的配置要点
    1.通过反射的机制,所以必须有无参构造器
    2.name 必须与getter相对应
    3.property除了value,还能用ref指向一个对象
    4.可用p标签等简化书写

    自动装配[个人觉得不建议使用]
    autowire(同样是在xml文件里的)
    1.byType >1 抛出异常
    2.byName setter属性名匹配则装配,否则不装配(ref)
    3.构造器(不推荐)

    Bean之间关系
    1.继承
        parent属性
    2.依赖
        depends-on属性,依赖的Bean必须在本Bean实例化之前创建好

    Bean的作用域
        scope 默认的作用域,Bean是单例的
        <bean id="" class="" scope="singleton/prototype(原型)/request(少)/session(少)"></bean>
        singleton:容器初始化时是便已创建好Bean,单例
        prototype:容器初始化时不创建Bean实例,而在每次请求时创建新的实例 (ps:struts2整合)

  • 相关阅读:
    Java中的分代垃圾回收策略
    Java Web容器的启动与处理请求的过程
    利用LRUMap 设计缓存
    《淘宝技术这十年》
    Java中的堆内存、栈内存、静态存储区
    JAVA中的代理技术(静态代理和动态代理)
    java中的synchronized关键字
    代理模式
    状态模式
    SSIS 错误代码 DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER
  • 原文地址:https://www.cnblogs.com/zhaoww/p/5103570.html
Copyright © 2020-2023  润新知