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整合)

相關文章
相關標籤/搜索