Spring依赖注入的两种方式是( )和( )。 Spring的注入方式和依赖注入方式有什么区别

Spring3.0\u6846\u67b6\u4e2d\u4f9d\u8d56\u6ce8\u5165\u4e3b\u8981\u6709\u51e0\u79cd\u65b9\u5f0f

3\u79cd\u65b9\u6cd5
1\u3002\u6784\u9020\u5668\u6ce8\u5165
public class xx {
private Manager manage;
public xx(Manager manage){
this.manage= manage;
}
}


2.setter \u65b9\u6cd5\u6ce8\u5165
public class xx {
private Manager manage;
public void setManager(Manager manage){
this.manage= manage;
}
}


3.\u63a5\u53e3\u6ce8\u5165
public interface Manager{
public void manage(Business business);
}
public class xx {
private Business business;
public void manage(Business business){
this.business = business;
}
}

Type1 \u63a5\u53e3\u6ce8\u5165

\u6211\u4eec\u5e38\u5e38\u501f\u52a9\u63a5\u53e3\u6765\u5c06\u8c03\u7528\u8005\u4e0e\u5b9e\u73b0\u8005\u5206\u79bb\u3002\u5982\uff1a

public class ClassA {
private InterfaceB clzB;
public init() {
Ojbect obj =
Class.forName(Config.BImplementation).newInstance();
clzB = (InterfaceB)obj;
}
\u2026\u2026
}

\u4e0a\u9762\u7684\u4ee3\u7801\u4e2d\uff0cClassA\u4f9d\u8d56\u4e8eInterfaceB\u7684\u5b9e\u73b0\uff0c\u5982\u4f55\u83b7\u5f97InterfaceB\u5b9e\u73b0\u7c7b\u7684\u5b9e\u4f8b\uff1f\u4f20\u7edf\u7684\u65b9\u6cd5\u662f\u5728\u4ee3\u7801\u4e2d\u521b\u5efaInterfaceB\u5b9e\u73b0\u7c7b\u7684\u5b9e\u4f8b\uff0c\u5e76\u5c06\u8d77\u8d4b\u4e88clzB\u3002

\u800c\u8fd9\u6837\u4e00\u6765\uff0cClassA\u5728\u7f16\u8bd1\u671f\u5373\u4f9d\u8d56\u4e8eInterfaceB\u7684\u5b9e\u73b0\u3002\u4e3a\u4e86\u5c06\u8c03\u7528\u8005\u4e0e\u5b9e\u73b0\u8005\u5728\u7f16\u8bd1\u671f\u5206\u79bb\uff0c\u4e8e\u662f\u6709\u4e86\u4e0a\u9762\u7684\u4ee3\u7801\uff0c\u6211\u4eec\u6839\u636e\u9884\u5148\u5728\u914d\u7f6e\u6587\u4ef6\u4e2d\u8bbe\u5b9a\u7684\u5b9e\u73b0\u7c7b\u7684\u7c7b\u540d\uff0c\u52a8\u6001\u52a0\u8f7d\u5b9e\u73b0\u7c7b\uff0c\u5e76\u901a\u8fc7InterfaceB\u5f3a\u5236\u8f6c\u578b\u540e\u4e3aClassA\u6240\u7528\u3002

\u8fd9\u5c31\u662f\u63a5\u53e3\u6ce8\u5165\u7684\u4e00\u4e2a\u6700\u539f\u59cb\u7684\u96cf\u5f62\u3002

\u800c\u5bf9\u4e8e\u4e00\u4e2aType1\u578bIOC\u5bb9\u5668\u800c\u8a00\uff0c\u52a0\u8f7d\u63a5\u53e3\u5b9e\u73b0\u5e76\u521b\u5efa\u5176\u5b9e\u4f8b\u7684\u5de5\u4f5c\u7531\u5bb9\u5668\u5b8c\u6210\uff0c\u5982J2EE\u5f00\u53d1\u4e2d\u5e38\u7528\u7684Context.lookup\uff08ServletContext.getXXX\uff09\uff0c\u90fd\u662fType1\u578bIOC\u7684\u8868\u73b0\u5f62\u5f0f\u3002

Apache Avalon\u662f\u4e00\u4e2a\u5178\u578b\u7684Type1\u578bIOC\u5bb9\u5668\u3002

Type2\u6784\u9020\u5b50\u6ce8\u5165

\u6784\u9020\u5b50\u6ce8\u5165\uff0c\u5373\u901a\u8fc7\u6784\u9020\u51fd\u6570\u5b8c\u6210\u4f9d\u8d56\u5173\u7cfb\u7684\u8bbe\u5b9a\uff0c\u5982\uff1a

public class DIByConstructor {
private final DataSource dataSource;
private final String message;
public DIByConstructor(DataSource ds, String msg) {
this.dataSource = ds;
this.message = msg;
}
\u2026\u2026
}

1、Spring通过DI(依赖注入)实现IOC(控制反转),常用的注入方式主要有三种:构造方法注入,setter注入,基于注解的注入。

2、如果题目里只有两个空,那就是setter注入(也就是通过配置文件)和注解注入。

setter注入的写法(配置文件)

<!-- 注册userService -->
<bean id="userService" class="com.lyu.spring.service.impl.UserService">
 <!-- 写法一 -->
 <!-- <property name="UserDao" ref="userDaoMyBatis"></property> -->
 <!-- 写法二 -->
 <property name="userDao" ref="userDaoMyBatis"></property>
</bean>
<!-- 注册mybatis实现的dao -->
<bean id="userDaoMyBatis" class="com.lyu.spring.dao.impl.UserDaoMyBatis"></bean>

基于注解的注入

@Resource
@Qualifier("userDaoMyBatis")
private IUserDao userDao;


  1. xml配置

  2. 注解

下面两种注解的区别:

@Autowired:Spring注解 

@Resource:java规范注解



spring官网文档明确记载

set注入和构造注入

1,Set注入    2,构造注入

  • spring ioc渚濊禆娉ㄥ叆鏈夊嚑绉 姣忕鍖哄埆,浼樼己鐐
    绛旓細spring鐨鏍稿績鎬濇兂鏄疘OC鍜孉OP,IOC-鎺у埗鍙嶈浆,鏄竴涓噸瑕佺殑闈㈠悜瀵硅薄缂栫▼鐨勬硶鍒欐潵娑堝噺璁$畻鏈虹▼搴忕殑鑰﹀悎闂,鎺у埗鍙嶈浆涓鑸垎涓涓ょ绫诲瀷,渚濊禆娉ㄥ叆鍜屼緷璧栨煡鎵,渚濊禆浠涔?涓轰粈涔堥渶瑕佷緷璧?娉ㄥ叆浠涔?鎺у埗浠涔?渚濊禆娉ㄥ叆鍜屾帶鍒跺弽杞槸涓鏍风殑姒傚康鍚?鎺ヨЕ鏂扮殑鐭ヨ瘑,灏忕紪鐨勮剳琚嬩腑鍏ㄦ槸澶уぇ鐨勯棶鍙,涓嶈繃娌℃湁鍏崇郴,浠婂ぉ杩欑瘒鍗氭枃,灏忕紪涓昏鏉ョ畝鍗...
  • 闈㈣瘯瀹:"璇磋浣犲Spring鐨鐞嗚В"
    绛旓細瀹冨彲浠ラ檷浣庣被涔嬮棿鐨勮﹀悎鎬э紝鏈涓ょ娉ㄥ叆鏂瑰紡锛氬湪浼犵粺绋嬪簭涓紝褰撴煇涓鑹查渶瑕佸彟澶栦竴涓鑹插崗鍔╂椂锛岀敱璋冪敤鑰呮潵鍒涘缓琚皟鐢ㄨ呯殑瀹炰緥銆傝屽湪Spring涓锛屽垱寤鸿璋冪敤鑰呯殑鐨勫伐浣滀笉鍐嶇敱璋冪敤鑰呮潵瀹屾垚锛岃岀敱绗笁鏂筍pring瀹瑰櫒鏉ュ畬鎴愶紝鎵浠ョО涓烘帶鍒跺弽杞紝Spring瀹瑰櫒鍒涘缓琚皟鐢ㄨ呯殑瀹炰緥锛岀劧鍚庢敞鍏ヨ皟鐢ㄨ咃紝鎵浠ュ張绉颁负渚濊禆娉...
  • 璇锋暀涓涓spring鐨addResourceHandlers闂
    绛旓細杩欐槸姝g‘鐨勫摝锛孈Resource鏄浉褰撲簬applicationContext.getBean鏂规硶锛佽繖鎬讳綋鏉ヨ锛屾槸Spring渚濊禆娉ㄥ叆鐨勪袱绉鍐欐硶锛屼竴绉嶆槸娉ㄩ噴鐨勶紝涓绉嶆槸XML鐨勫啓娉曪紒鍓嶆彁鏄紝鍙浣犲凡缁忕敤@Component 娉ㄩ噴浜嗛渶瑕佹敞鍏ョ殑瀵硅薄锛屾垨鑰呭凡缁忓湪XML鏂囦欢涓娇鐢 bean 閰嶇疆浜嗛渶瑕佹敞鍏ョ殑瀵硅薄锛屼綘灏卞彲浠ョ敤 @Resource 鎴栬 applicationContext.get...
  • 娣卞眰鐞嗚ВSpring 鎺у埗鍙嶈浆鍜渚濊禆娉ㄥ叆,杩欎竴绡囨枃澶熶簡
    绛旓細Ioc 瀹瑰櫒閫氳繃 JavaBean 鏍峰紡鐨 setter 鏂规硶娉ㄥ叆缁勪欢鐨勪緷璧栭」 鍦 Spring 涓紝杩樻敮鎸佸彟涓绉嶈绉颁负瀛楁娉ㄥ叆锛坒ield injection锛夌殑娉ㄥ叆绫诲瀷锛屽湪鍚庨潰瀛︿範浣跨敤 @Autowire 娉ㄨВ杩涜鑷姩瑁呴厤鏃跺皢浠嬬粛璇ユ敞鍏ョ被鍨 Spring 鐨勪緷璧栨敞鍏瀹瑰櫒鐨勬牳蹇冩槸 BeanFactory锛屽畠璐熻矗绠$悊缁勪欢锛屽寘鎷緷璧栭」浠ュ強瀹冧滑鐨勭敓鍛藉懆鏈熴傚鏋滄垜浠兂...
  • spring涓娉涘瀷鐨渚濊禆娉ㄥ叆 鏄庝箞瀹炵幇鐨
    绛旓細涓銆佷负浜嗘洿鍔犲揩鎹风殑寮鍙戯紝涓轰簡鏇村皯鐨勯厤缃紝鐗瑰埆鏄拡瀵 Web 鐜鐨勫紑鍙戯紝浠 Spring 4.0 涔嬪悗锛孲pring 寮曞叆浜 娉涘瀷渚濊禆娉ㄥ叆銆備簩銆佹硾鍨嬩緷璧栨敞鍏ワ細瀛愮被涔嬮棿鐨勪緷璧栧叧绯荤敱鍏剁埗绫绘硾鍨嬩互鍙婄埗绫讳箣闂寸殑渚濊禆鍏崇郴鏉ョ‘瀹氾紝鐖剁被鐨勬硾鍨嬪繀椤讳负鍚屼竴绫诲瀷銆傞氫織涓鐐规潵璇达細涓や釜瀛愮被涔嬮棿鐨勪緷璧栧叧绯讳笉闇瑕佸湪瀛愮被涓幓澹版槑锛岃屾槸...
  • 浠涔堟槸渚濊禆娉ㄥ叆?
    绛旓細渚濊禆娉ㄥ叆鏄spring妗嗘灦涓殑瑙h︾殑涓绉嶇瓥鐣,绉颁负DI鎴朓OC(鎺у埗鍙嶈浆),涓昏鏈塻et鏂瑰紡锛堟彁渚泂et鍜実et鏂规硶)鍜宑onstractor(鏋勯犳柟娉)鏂瑰紡锛屽畠浣垮緱绫讳笌绫讳箣闂翠互閰嶇疆鏂囦欢鐨褰㈠紡缁勭粐鍦ㄤ竴璧凤紝鑰屼笉鏄‖缂栫爜鐨勬柟寮忥紝渚嬪classA 涓敤鍒颁簡classB濡傛灉鍐欎唬鐮佺殑璇濇槸new 涓涓猚lassB,鑰岀敤渚濊禆娉ㄥ叆鐨勬柟寮鍒欐槸鍦╝pplication...
  • spring 涓緷璧栨敞鍏鏈夊摢鍑犵娉ㄨВ
    绛旓細Spring瀵逛簬Bean鐨渚濊禆娉ㄥ叆锛屾敮鎸佸绉嶆敞瑙鏂瑰紡锛歊esource javax.annotation JSR250 (Common Annotations for Java)Inject javax.inject JSR330 (Dependency Injection for Java)Autowired org.springframework.bean.factory Spring 鐩磋涓婄湅璧锋潵锛孈Autowired鏄疭pring鎻愪緵鐨勬敞瑙o紝鍏朵粬鍑犱釜閮芥槸JDK鏈韩鍐呭缓鐨勬敞瑙o紝...
  • spring鐨勬敞鍏鍜岀洿鎺ew涓涓璞鏈変粈涔涓嶅悓?
    绛旓細涓銆佹剰鎬濅笉鍚 spring渚濊禆娉ㄥ叆锛屾槸鎸囧璞″湪琚垱寤虹殑鏃跺欙紝鐢变竴涓皟鎺х郴缁熷唴鎵鏈夊璞$殑澶栫晫瀹炰綋锛屽皢鍏舵墍渚濊禆鐨勫璞$殑寮曠敤锛屼紶閫掔粰瀹冦備緥濡傦細A瀵硅薄闇瑕佸紩鐢˙瀵硅薄鐨勮瘽锛屽彲浠ュ湪A鐨勬瀯閫犲嚱鏁伴噷闈㈠皢B浼犻掕繘鍘伙紝鎴栬呰皟鐢ˋ鐨勬煇涓猻et鏂规硶銆傞氫織涓鐐瑰氨鏄痵pring宸茬粡new濂戒簡锛 瑕佺敤鐩存帴鍙栨嬁銆備簩銆侀『搴 new涓涓璞$殑...
  • 闈㈣瘯棰:璇磋浣犲spring鐨鐞嗚В
    绛旓細XmlWebApplicationContext 鍦 web 鐜涓幏鍙 spring 瀹瑰櫒瀵硅薄 Spring閫氳繃BeanFactory鏉ヨ幏鍙栬繖浜涚被鐨勫璞★紝鍦ㄩ厤缃枃浠朵腑閫氳繃<bean/>鑺傜偣灏嗙被浜ょ粰Spring杩涜绠$悊锛孉pplicationContext鐨勫疄鐜扮被閫氳繃getBean()鏂规硶浠嶴pring瀹瑰櫒涓幏鍙栧璞★紝榛樿涓哄崟渚嬬殑銆傗憽渚濊禆娉ㄥ叆 瀹冨彲浠ラ檷浣庣被涔嬮棿鐨勮﹀悎鎬э紝鏈涓ょ娉ㄥ叆鏂瑰紡锛歴et娉ㄥ叆...
  • 渚濊禆娉ㄥ叆绌剁珶鏈変粈涔濂藉
    绛旓細浣嗗湪Spring閲岋紝鍒涘缓琚皟鐢ㄨ呯殑宸ヤ綔涓嶅啀鐢辫皟鐢ㄨ呮潵瀹屾垚锛屽洜姝ょО涓烘帶鍒跺弽杞;鍒涘缓琚皟鐢ㄨ呭疄渚嬬殑宸ヤ綔閫氬父鐢盨pring瀹瑰櫒鏉ュ畬鎴愶紝鐒跺悗娉ㄥ叆璋冪敤鑰咃紝鍥犳涔熺О涓渚濊禆娉ㄥ叆銆備笉绠℃槸渚濊禆娉ㄥ叆锛岃繕鏄帶鍒跺弽杞紝閮借鏄嶴pring閲囩敤鍔ㄦ併佺伒娲鐨勬柟寮鏉ョ鐞嗗悇绉嶅璞°傚璞′笌瀵硅薄涔嬮棿鐨勫叿浣撳疄鐜颁簰鐩搁忔槑銆傚湪鐞嗚В渚濊禆娉ㄥ叆涔嬪墠锛岀湅濡備笅...
  • 扩展阅读:spring注解开发依赖注入 ... spring boot依赖注入方式 ... spring循环依赖 ... 什么是spring的依赖注入 ... spring aop ... spring中基于构造方法的依赖注入 ... spring两种核心容器 ... spring的两种注入方式 ... spring依赖注入和控制反转 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网