Spring框架学习之IOC(一)

Spring框架学习之IOC

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

Spring相关知识

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

IOC:控制反转session

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

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类会这样写:this

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。只须要这样写:spa

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文件的,配置文件以下:prototype

 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的子接口code

注入方式
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整合)

相关文章
相关标签/搜索