spring快速入門(一)


  • 對於為什么使用spring框架,這里不多做解釋,詳情請百度。本人推薦面向驅動程序學習,通過實戰來瞧瞧spring技術的偉大。所以先來看看原始開發一個簡單的例子,由例子引入spring相關的技術。如果錯誤,敬請指正~~

  


 

  1、新建一個java項目,項目結構圖如下:

    

  項目說明:該項目簡單模擬添加一個用戶的一個過程,由客戶端client發送請求,Acton作為控制層,Dao作為數據層處理,數據處理層有兩個不同的實現!

  UserDao代碼:

package com.murong.dao;

public interface UserDao {
    
    //添加用戶
    public void addUser(String name,int age);
}

  UserDaoMysqlImpl代碼:

package com.murong.dao;

public class UserDaoMysqlImpl implements UserDao {

    @Override
    public void addUser(String name, int age) {
        System.out.println("mysql添加用戶成功"+"用戶名稱:"+name+"年齡:"+age);
    }
}

  UserDaoOracleImpl代碼:

package com.murong.dao;

public class UserDaoOracleImpl implements UserDao {

    @Override
    public void addUser(String name, int age) {
        System.out.println("oracle添加用戶成功"+"用戶名稱:"+name+"年齡:"+age);
    }
}

  UserAction代碼:

package com.murong.action;

public interface UserAction {
        //添加用戶
        public void addUser(String name,int age);
}

  UserActionImpl代碼:

package com.murong.action;

import com.murong.dao.UserDao;
import com.murong.dao.UserDaoMysqlImpl;
import com.murong.dao.UserDaoOracleImpl;

public class UserActionImpl implements UserAction{

    @Override
    public void addUser(String name, int age) {
        //由mysql實現
        UserDao userDaoImpl = new UserDaoMysqlImpl();
        userDaoImpl.addUser(name, age);
        
        //由oracle實現
        UserDao userDaoOracle = new UserDaoOracleImpl();
        userDaoOracle.addUser(name, age);
    }

}

  Client代碼:

package com.murong.client;

import com.murong.action.UserAction;
import com.murong.action.UserActionImpl;

public class Client {
    
    public static void main(String[] args) {
        UserAction userAction = new UserActionImpl();
        userAction.addUser("久伴", 24);
    }
}

   分析項目問題:我們在UserActionImpl的實現類中依賴UserDao的具體實現類,由我們的程序主動查找服務(對象)定位,即查找具體的實現類(UserDaoMysqlImpl或者UserDaoOracleImpl)完成添加功能。但是這是存在一定的硬編碼問題。當然我們可以通過工廠的方式來創建UserDao,工廠隱藏了實現類的具體創建細節。但是呢,代碼也不是很可觀,起碼我們的UserActionImpl中還存在工廠資源。其實我們還是自己拿到工廠自己創建對象。

  那么Spring是怎么樣實現的呢?

    Spring是通過IOC容器完成對對象的創建,我們現在就不需要自己創建對象了,然后通過注入(DI)的方式給我們送相對應的資源。這就類似於Servlet中的request和response,它們是由tomcat容器創建,送給我們,我們直接使用就可以了。

    提前了解依賴注入和控制反轉!!!

    依賴注入(Dependency Injection)和控制反轉(Inversion of Control)同一個概念。具體含義:當某個角色(可能一 個Java實例,調用者)需要另一個角色(另一個Java實例,被調用者)的協助時,在 傳統的程序設計過程中,通常由調用者來創建被調用者的實例。但在Spring里,創建被調用者的工作不再由調用者來完成,而是通過IOC容器創建,通過注入的方式給調用者。因此稱為控制反轉;創建被調用者 實例的工作通常由Spring容器來完成,然后注入調用者,因此也稱為依賴注入


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM