小規模なプロジェクトを通じてIOCを理解する - 春は3を開始しました

今、IOCはこれがより直感的であるかもしれない、と思っ理解するための小さなプログラムを介して、最初のプロジェクト構造はコントローラでサービスデータベースを扱うための責任、DAO((彼は抽象的サービスロジックの一部を担当していました)、(制御層は、彼がデータと配布を受け入れることにしました) )

 

私たちのモデル操作を見てください

パッケージ豆。

パブリック クラスユーザー{
     プライベート int型のID。
    プライベート文字列のユーザ名。
    プライベート文字列のパスワード。

    パブリックユーザ(int型のID、文字列名、文字列のパスワード){
         この .ID = ID。
        この .username = ユーザ名;
        このみましょう。パスワード= パスワード; 
    } 

    公共 ボイドするsetPassword(文字列のパスワード){
         このみましょう。パスワード= パスワード。
    } 

    公共 ボイドsetUsername(文字列名){
        この .username = ユーザ名; 
    } 

    公共 ボイド SETID(int型のID){
         この .ID = ID。
    } 

    @Override 
    パブリック文字列のtoString(){
         戻り "ユーザー{" + 
                "ID =" + ID + 
                "ユーザ名=" '+名+ '\'' + 
                "パスワード= '" +パスワード+ '\'' + 
                「}」
    } 
}

次に、データベース処理モジュールを見て

// UserDaoの
パッケージDAO。

輸入bean.User; 

パブリック インターフェースUserDao { 
    ユーザーのgetUser()。
} 
// データソース数据库的相关配置类
パッケージdao.impl。

パブリック クラスデータソース{
     プライベート文字列のユーザ名。
    プライベート文字列のパスワード。
    プライベート文字列のURL。
    プライベート文字列driverClass。

    公共の文字列getPasswordに(){
         リターンパスワード; 
    } 

    公共 ボイドするsetPassword(文字列のパスワード){
         このみましょう。パスワード=パスワード; 
    } 

    パブリック文字列のgetURL(){
         戻りURL。
    } 

    公共 ボイドてsetURL(文字列のURL){
         このた.url = URL。
    } 

    パブリック文字列getDriverClass(){
         戻りdriverClassと、
    } 

    公共 ボイドsetDriverClass(文字列driverClass){
         この .driverClass = driverClass。
    } 

    パブリックデータソース(){ 
    } 

    パブリックデータソース(文字列名、文字列のパスワード、文字列のURL、文字列driverClass){
         この .username =ユーザ名;
        このみましょう。パスワード= パスワード; 

        このする.url = URL;
        この .driverClass = driverClass。
    } 

    パブリック文字列getUsername(){
         戻りユーザ名; 
    } 

    公共 ボイドsetUsername(文字列名){
         この .username = ユーザ名; 
    } 

    @Override 
    パブリック文字列のtoString(){
         戻り "データソース{" + 
                "ユーザ名= '" +名+ '\'' + 
                "パスワード= '" +パスワード+ '\'' + 
                "URL =" '+ URL + '\'' + 
                "driverClass = '" + driverClass + '\'' + 
                '}' ; 
    } 
} 

// UserDaoImpl数据库的相关操作
パッケージdao.impl。

輸入bean.User;
輸入dao.UserDao。

パブリック クラス UserDaoImpl 実装UserDao { 
    データソースのDS。

    パブリックUserDaoImpl(){ 
    } 

    公共UserDaoImpl(データソースのDS){
         この .DS = DS。
    } 

    パブリックユーザのgetUser(){ 
        System.out.printlnは( "DS);
        リターン・ 新しい新ユーザ(1、 "マーク"、 "1234" ); 
    } 
}

 次に、サービスを見て

// UserServiceのサービス对外接口
パッケージサービス。

輸入bean.User; 

パブリック インターフェースUserServiceの{ 

    ユーザーのgetUser()。
} 

// UserServiceImpl处理
パッケージservice.impl。

輸入bean.User;
輸入dao.UserDao。
輸入service.UserService。

パブリック クラス UserServiceImpl 実装UserServiceの{ 
    UserDao userDao。

    パブリックUserServiceImpl(){ 
    } 

    公共UserServiceImpl(UserDao userDao){
         この .userDao = userDao。 
    }

    公共 ボイドsetUserDao(UserDao UD){
         この .userDao = UD。
    } 

    公共UserDao getUserDao(){
         戻り 、この.userDaoと、
    } 

    パブリックユーザのgetUser(){
         戻りuserDao.getUser()。
    } 
}

私たちは、コントローラを見て

パッケージコントローラ。

輸入bean.User;
輸入service.UserService。
輸入service.impl.UserServiceImpl; 

パブリック クラスUserControllerで{ 
    UserServiceのUserServiceの。

    公共 ボイドのgetUser(){ 
        ユーザーユーザー = userService.getUser()。
        System.out.println(ユーザ)。
    } 

    公共 ボイドsetUserService(UserServiceImpl UserServiceの){
         この .userService = UserServiceの。
    } 
}

私たちは、ファイルを見て集中applicationContext.xmlを

<?xmlのバージョン= "1.0"エンコード= "UTF-8"> 
<豆のxmlns = "http://www.springframework.org/schema/beans" 
       のxmlns:XSI = "http://www.w3.org / 2001 / XMLスキーマ・インスタンス"のxmlns:P = "http://www.springframework.org/schema/p" 
       のxsi:schemaLocationの =" http://www.springframework.org/schema/beansのhttp:// WWW。 springframework.org/schema/beans/spring-beans.xsd "> 
    <! -数据库连接使用プロパティ注入- > 
    <豆ID =" DB " クラス = "dao.impl.DataSources"> 
        <プロパティ名=" URL "値="はjdbc:mysqlの://127.0.0.1:3306 /ユーザー"/> 
        <プロパティ名="ユーザ名」値= "ルート" /> 
        <プロパティ名= "パスワード"値= "mysqlの" /> 
        <プロパティ名= "driverClass"値= "はcom.mysql.jdbc.Driver" />プロパティ名= "パスワード"値= "mysqlの" /> 
    </豆>
    <! -注射のためのコンストラクタ、引数のコンストラクタを使用してデータベース操作、それはオブジェクトであるため、我々はREFを使用する- > 
    <豆ID =「DAO」クラス =「dao.impl.UserDaoImpl」> 
        <コンストラクタ、引数=インデックス" 0 "名前=" DS "REF =" DB "/> 
    </豆> 

    <! -私たちは、名前空間注射、REFを追加するので、オブジェクトを使用したpサーバーの操作- > 
    <上記のid =上記豆"サービス" クラス = "service.impl.UserServiceImpl" P:userDao-REF = "DAO" /> 

    <! -コントロール層操作- > 
    <ビーンID = "コントローラ" クラス = "controller.UserController" P:= REF-そのUserServiceの" -service「/> 

</豆>

テストコードでの最終的な外観

輸入controller.UserController;
輸入org.junit.Test;
輸入org.springframework.context.support.ClassPathXmlApplicationContext; 

パブリック クラスTESTUSER { 

    @Test 
    公共 ボイド試験(){ 
        ClassPathXmlApplicationContextコンテキスト = 新しい ClassPathXmlApplicationContext( "applicationContext.xmlを" )。
        UserControllerでUC = context.getBean( "コントローラ"、UserControllerで。クラス)。
        uc.getUser(); 

    } 
} 
//    模拟数据库连接データソース{ユーザー名= 'ルート'、パスワード= 'mysqlの'、URL = 'JDBCます。mysql://127.0.0.1:3306/user」、driverClass = 'はcom.mysql.jdbc.Driver'} 
ユーザー{ID = 1、ユーザ名= 'マーク'、パスワード= '1234'}

コードが通る、我々はサービス、DAO、コントローラで見、我々は任意のオブジェクトを初期化していない、我々はすべてのapplicationContext.xmlを初期化するすべての情報は、このような理解を達成するために、私たちは、関連する操作を行う助けに春の内側に配置しましたカップリング、およびこのようなデータベースを変更するなどの変更を行うために、後で必要、我々はあなたがコードプロジェクトプロジェクトのレイヤーを探す必要はありませんが、内部のようなapplicationContext.xmlを直接修正しました。

おすすめ

転載: www.cnblogs.com/yangshixiong/p/12188734.html