zoukankan      html  css  js  c++  java
  • 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整合)

  • 相关阅读:
    城市的划入划出效果
    文本溢出省略解决笔记css
    长串英文数字强制折行解决办法css
    Poj 2352 Star
    树状数组(Binary Indexed Trees,二分索引树)
    二叉树的层次遍历
    Uva 107 The Cat in the Hat
    Uva 10336 Rank the Languages
    Uva 536 Tree Recovery
    Uva10701 Pre, in and post
  • 原文地址:https://www.cnblogs.com/zhaoww/p/5103570.html
Copyright © 2011-2022 走看看