日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring四种依赖注入方式

發布時間:2023/12/4 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring四种依赖注入方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

平常的java開發中,程序員在某個類中需要依賴其它類的方法,通常是new一個依賴類再調用類實例的方法,這種開發存在的問題是new的類實例不好統一管理。

spring提出了依賴注入的思想,即依賴不由程序員控制,而是通過spring容器幫我們new指定實例并且將實例注入到需要該對象的類中。依賴注入的另一種說法是“控制反轉”,通俗的理解是:平常我們new一個實例,這個實例的控制權是我們程序員,而控制反轉是指new實例工作不由我們程序員來做而是交給spring容器來做。

spring有4種依賴注入方式:

  • Set方法注入
  • 構造器注入
  • 靜態工廠的方法注入
  • 實例工廠的方法注入
  • 按照實現方式分為兩類:

  • 注解(如@Autowired)
  • 配置文件(如xml)
  • 以下對于4種依賴注入方式,分別使用兩種實現方式來實現

    1、Set方法注入

    Set方法注入是最簡單、最常用的注入方式。

    1.1 注解注入:

    package com.obob.dao;public class UserDao {public void login() {System.out.println("login...");} } package com.obob.service; import org.springframework.beans.factory.annotation.Autowired; import com.obob.dao.UserDao;public class UserService {//注解注入(autowire注解默認使用類型注入)@Autowiredprivate UserDao userDao;public void login() {userDao.login();} }

    1.2 配置文件注入

    UserDao定義不變,UserService去掉注解

    package com.obob.service; import org.springframework.beans.factory.annotation.Autowired; import com.obob.dao.UserDao;public class UserService {private UserDao userDao;public void login() {userDao.login();} }

    然后使用配置文件:

    <bean name="userService" class="com.obob.service.UserService"><property name="userDao" ref="userDao" /> </bean> <bean name="userDao" class="com.obob.dao.UserDao"></bean>

    2、構造方法注入

    構造方法注入是指帶有參數的構造函數注入

    2.1 注解注入:

    package com.obob.service;import org.springframework.beans.factory.annotation.Autowired;import com.obob.dao.UserDao;public class UserService {private UserDao userDao;//注解到構造方法處@Autowiredpublic UserService(UserDao userDao) {this.userDao = userDao;}public void login() {userDao.login();} }

    2.2 配置文件注入

    UserService

    package com.obob.service;import org.springframework.beans.factory.annotation.Autowired;import com.obob.dao.UserDao;public class UserService {private UserDao userDao;public UserService(UserDao userDao) {this.userDao = userDao;}public void login() {userDao.login();} }

    配置文件:

    <bean name="userService" class="com.obob.service.UserService"><constructor-arg index="0" ref="userDao"></constructor-arg> </bean> <bean name="userDao" class="com.obob.dao.UserDao"></bean>

    3、靜態工廠的方法注入

    靜態工廠顧名思義,就是通過調用靜態工廠的方法來獲取自己需要的對象。
    為了使用Spring的依賴注入IOC,我們不直接通過"工程類.靜態方法()"來獲取對象,而是依然通過spring注入的形式獲取:

    此種方式無通過注解注入

    3.1 配置文件注入

    UserService

    package com.obob.service;import com.obob.dao.UserDao;public class UserService {private UserDao userDao;public void login() {userDao.login();} }

    Factory

    package com.obob;import com.obob.dao.UserDao;public class Factory {public static UserDao initUserDao() {return new UserDao();} }

    配置文件:

    <bean name="userService" class="com.obob.service.UserService"><property name="staticUserDao" ref="staticUserDao" /> </bean> <bean name="staticUserDao" class="com.obob.Factory" factory-method="initUserDao"></bean>

    4、實例工廠的方法注入

    實例工廠的意思是獲取對象實例的方法不是靜態的,所以你需要首先new工廠類,再調用普通的實例方法:

    此種方式無通過注解注入

    4.1 配置文件注入

    UserService

    package com.obob.service;import com.obob.dao.UserDao;public class UserService {private UserDao userDao;public void login() {userDao.login();} }

    Factory

    package com.obob;import com.obob.dao.UserDao;public class Factory {public UserDao initUserDao() {return new UserDao();} }

    配置文件:

    <bean name="userService" class="com.obob.service.UserService"><property name="staticUserDao" ref="staticUserDao" /> </bean> <bean name="staticUserDao" factory-bean="factory" factory-method="initUserDao"></bean> <bean name="factory" class="com.obob.Factory"></bean>

    5、總結

    這四種方式,最常用的是1和2(set方法、構造方法注入)

    總結

    以上是生活随笔為你收集整理的spring四种依赖注入方式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。