Spring框架入門

Spring介紹

Spring框架是個輕量級的Java EE框架。所謂輕量級,是指不依賴于容器就能運行的。   
輕量級框架是相對于重量級框架而言的,重量級框架必須依賴特定的容器,例如EJB框架就必須運行在Glassfish、JBoss等支持EJB的容器中,而不能運行在Tomcat中。   
Spring以IoC、AOP為主要思想,其中IoC,Inversion of Control 指控制反轉或反向控制。在Spring框架中我們通過配置創(chuàng)建類對象,由Spring在運行階段實例化、組裝對象。AOP,Aspect Oriented Programming,面向切面編程,其思想是在執(zhí)行某些代碼前執(zhí)行另外的代碼,使程序更靈活、擴展性更好,可以隨便地添加、刪除某些功能。Servlet中的Filter便是一種AOP思想的實現(xiàn)。   
Spring同時也是一個“一站式”框架,即Spring在JavaEE的三層架構[表現(xiàn)層(Web層)、業(yè)務邏輯層(Service層)、數(shù)據(jù)訪問層(DAO層)]中,每一層均提供了不同的解決技術。如下: 表現(xiàn)層(Web層):Spring MVC 業(yè)務邏輯層(Service層):Spring的IoC 數(shù)據(jù)訪問層(DAO層):Spring的jdbcTemplate Spring中的IoC操作   將對象的創(chuàng)建交由Spring框架進行管理。

針對自己初學者剛入門框架的一種學習分享,只是學會怎么去使用框架來實現(xiàn)一些Demo的分享。

IoC

IoC即控制反轉操作分為:IoC配置文件方式和IoC的注解方式。
(1)導入Spring框架中的相關jar包,以及 支持日志輸出的 commons-logging 和 log4j 的jar包;
(2)創(chuàng)建一個普通的Java類,并在該類中創(chuàng)建方法,如下:

     User.java  package ioc; 
      public class User {     
                public void add() {       
                      System.out.println("add...");   
    }
 } 

(3)創(chuàng)建Spring的配置文件,進行Bean的配置

Spring的核心配置文件名稱和位置不是固定的。但官方件建議將該核心配置文件放在src目錄下,且命名為 applicationContext.xml。這個命名也不是固定的,但是用的時候相應注意就好。
 這里為了方便,將核心配置文件放在src目錄下,并命名為 bean1.xml,這個配置文件模板可以到百度去找,然后復制過來即可。內容如下:

   <?xml version="1.0" encoding="UTF-8"?>
 <beans xmlns="http://www.springframework.org/schema/beans"  
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
           xsi:schemaLocation="http://www.springframework.org/schema/beans 
 http://www.springframework.org/schema/beans/spring-beans.xsd">
 <bean id="user" class="com.wm103.ioc.User">
        </bean>
     </beans> 

(4)編寫測試類進行測試,通過配置文件創(chuàng)建類對象

    TestIoC.java  package ioc;  import org.junit.Test; 
     import org.springframework.context.ApplicationContext; 
     import org.springframework.context.support.ClassPathXmlApplicationContext;  
   public class Test {    
   @Test     public void testUser() {        
    // 1. 加載Spring配置文件,根據(jù)創(chuàng)建對象         
     ApplicationContext context = new    ClassPathXmlApplicationContext("bean1.xml");         
  // 2. 得到配置創(chuàng)建的對象        
      User user = (User) context.getBean("user"); 
      System.out.println(user);      
     user.add();   
      }
   }

Spring的bean管理(配置文件) Bean實例化的方式

在Spring中通過配置文件創(chuàng)建對象。 Bean實例化三種方式實現(xiàn):
(1)使用類的無參數(shù)構造創(chuàng)建:

      <!-- 等同于 user = new ioc.User(); -->   
      <bean id="user" class="ioc.User">
  </bean> 

(2)使用靜態(tài)工廠創(chuàng)建

    <bean id="user" class="ioc.UserFactory" factory-method="createInstance">
</bean>

(3)使用實例工廠創(chuàng)建

 <bean id="userFactory" class="com.wm103.ioc.UserFactory"></bean>   

  <bean id="user" factory-bean="userFactory" factory-method="createInstance">
    </bean> 

Bean標簽的常用屬性

(1)id屬性:
用于指定配置對象的名稱,不能包含特殊符號。
(2)class屬性:創(chuàng)建對象所在類的全路徑。
(3)name屬性:功能同id屬性一致。但是在name屬性值中可以包含特殊符號。
(4)scope屬性 singleton:默認值,單例 單例模式下,在程序下只有一個實例。非單態(tài)模式下,每次請求該Bean,都會生成一個新的對象。 prototype:多例 request:創(chuàng)建對象后將對象存放到request域 session:創(chuàng)建對象后將對象存放到session域 globalSession:創(chuàng)建對象后將對象存放到globalSession域 屬性注入 
屬性注入指創(chuàng)建對象時,向類對象的屬性設置屬性值。
  在Spring框架中支持set方法注入和有參構造函數(shù)注入,即創(chuàng)建對象后通過set方法設置屬性或采用有參構造函數(shù)創(chuàng)建對象并初始化屬性。 使用有參構造函數(shù)注入屬性

 package ioc;
 public class Demo1 {   
 private String demoName;      
  public Demo1(String demoName) {         
      this.demoName = demoName;     
}    
  public void out() {        
       System.out.println("This is Demo1.");    
       } 
} 

bean的配置:

   <bean id="demo1" class="com.wm103.ioc.Demo1">        
     <constructor-arg name="demoName" value="Demo1">
      </constructor-arg>    
   </bean> 

創(chuàng)建Demo1對象進行測試:

    @Test public void testDemo1() {    
     // 1. 加載Spring配置文件,根據(jù)創(chuàng)建對象     
        ApplicationContext context = new       ClassPathXmlApplicationContext("bean1.xml");     
    // 2. 得到配置創(chuàng)建的對象     
       Demo1 demo1 = (Demo1) context.getBean("demo1");
       System.out.println(demo1);    
       demo1.out();
   } 

使用set方法注入屬性

     package ioc; 
    public class Demo2 {   
        private String demoName;      
        public void setDemoName(String demoName) {         
              this.demoName = demoName;    
 }      
        public void out() {         
                System.out.println("This is Demo2.");     
  } 
}

bean的配置:

   <bean id="demo2" class="com.wm103.ioc.Demo2">         
      <property name="demoName" value="Demo2">
      </property>     
  </bean>   

創(chuàng)建Demo2對象進行測試:

  @Test public void testDemo2() {     
    // 1. 加載Spring配置文件,根據(jù)創(chuàng)建對象    
   ApplicationContext context = new     ClassPathXmlApplicationContext("bean1.xml");   

  // 2. 得到配置創(chuàng)建的對象    
     Demo2 demo2 = (Demo2) context.getBean("demo2");
         System.out.println(demo2);     
        demo2.out(); } 
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,544評論 19 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,265評論 6 342
  • 文章作者:Tyan博客:noahsnail.com 3.4 Dependencies A typical ente...
    SnailTyan閱讀 4,488評論 2 7
  • 01面對人生的難題,智慧的人不會因害怕而退縮,他們選擇迎難而上。 02你不能解決問題,你最終會成為問題。 03自律...
    史諾比馨蔚閱讀 262評論 0 0
  • 別人喜歡什么樣的,我就變成什么樣的。別人討厭什么樣的,我就變成相反的模樣。慢慢的,我就找不到自己該變成什么樣的了。...
    ??蜔o心閱讀 120評論 0 0

友情鏈接更多精彩內容