Spring bean注入方式
Spring bean提供了3中注入方式:屬性注入和構造方法注入
1、屬性注入:
1 <bean id="dept" class="com.proc.bean.Dept"> 2 <property name="id" value="2"/> 3 <property name="name" value="資訊部"></property> 4 </bean>
屬性注入方式,要求屬性提供呢setXxx方法。上面提供的是普通屬性注入,如果要注入物件屬性,可以這樣
1 <bean id="user" class="com.proc.bean.User"> 2 <property name="id" value="1" /> 3 <property name="username" value="caoyc"></property> 4 <property name="dept" ref="dept"></property> 5 </bean>
我們看到第三個屬性dept,是一個Dept型別的屬性,可以通過ref來引用一個已定義的Dept型別的dept物件。
1 ApplicationContext context=newClassPathXmlApplicationContext("applicationContext.xml"); 2 User user=context.getBean("user", User.class); 3 System.out.println(user.getUsername()); 4 System.out.println(user.getDept().getName());
結果我們可以看到
caoyc
資訊部
除了可以使用ref來引用外部物件外,我們也可以在user物件內部宣告一個Dept物件
1 <bean id="user" class="com.proc.bean.User"> 2 <property name="id" value="1" /> 3 <property name="username" value="caoyc"></property> 4 <property name="dept"> 5 <bean class="com.proc.bean.Dept"> 6 <property name="id" value="2"/> 7 <property name="name" value="資訊部"></property> 8 </bean> 9 </property> 10 </bean>
2、使用構造器注入
假如,有一個User類
package com.proc.bean; public class User { private int id; private String username; private int age; private double slary; public User() { } public User(int id, String username) { this.id = id; this.username = username; } @Override public String toString() { return "User [id=" + id + ", username=" + username + ", age=" + age + ", slary=" + slary + "]"; } }
<bean id="user" class="com.proc.bean.User"> <constructor-arg value="1"/> <constructor-arg value="caoyc"/> </bean>
這裡使用的是: public User(int id, String username)構造方式
這裡使用的是下標方式,這裡省略了index屬性。index屬性從0開始。上面的程式碼相當於
1 <bean id="user" class="com.proc.bean.User"> 2 <constructor-arg index="0" value="1"/> 3 <constructor-arg index="1" value="caoyc"/> 4 </bean>
假設有這樣的兩個構造方式
1 public User(int id, String username, int age) { 2 this.id = id; 3 this.username = username; 4 this.age = age; 5 } 6 public User(int id, String username, double slary) { 7 this.id = id; 8 this.username = username; 9 this.slary = slary; 10 }
配置bean
1 <bean id="user" class="com.proc.bean.User"> 2 <constructor-arg index="0" value="1" /> 3 <constructor-arg index="1" value="caoyc"/> 4 <constructor-arg index="2" value="18"/> 5 </bean> 6 7 <bean id="user2" class="com.proc.bean.User"> 8 <constructor-arg index="0" value="1" /> 9 <constructor-arg index="1" value="caoyc"/> 10 <constructor-arg index="2" value="1800"/> 11 </bean>
測試程式碼
1 ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); 2 User user=context.getBean("user",User.class); 3 System.out.println(user); 4 5 User user2=context.getBean("user2",User.class); 6 System.out.println(user2);
輸出結果
1 User [id=1, username=caoyc, age=0, slary=18.0] 2 User [id=1, username=caoyc, age=0, slary=1800.0]
這裡都是呼叫的public User(int id, String username, double slary)這個建構函式。那麼怎麼呼叫public User(int id, String username, int age)這個建構函式呢?
方法是,在這裡我們需要使用到type屬性,來指定引數的具體型別
1 <bean id="user" class="com.proc.bean.User"> 2 <constructor-arg index="0" value="1" /> 3 <constructor-arg index="1" value="caoyc"/> 4 <constructor-arg index="2" value="18" type="int"/> 5 </bean>
輸出結果
1 User [id=1, username=caoyc, age=18, slary=0.0] 2 User [id=1, username=caoyc, age=0, slary=1800.0]
【其它說明】
1、如果value屬性是基本屬性直接使用
2、如果valeu屬性是其它型別,需要使用ref引用外部型別或使用內部定義方式
3、如果value屬性中包含了xml特殊字元,需要使用CDATA來。例如:
相關推薦
Spring bean注入方式
Spring bean提供了3中注入方式:屬性注入和構造方法注入
1、屬性注入:
1 <bean id="dept" class="com.proc.bean.Dept">
2 <property name="id" value="2"/&
Spring 學習一 bean 注入方式
Bean 的注入方式
介紹向 IOC 容器注入 bean 的方式
XML 配置的方式
public class Person {
private String name;
private Integer age;
}
xml 檔案的配置
Spring三種bean注入方式
(http://glzaction.iteye.com/blog/1299441)
Spring中依賴注入有三種注入方式:
一、構造器注入;
二、設值注入(setter方式注入);
三、Feild方式注入(註解方式注入)。
一、構造器注入
構造器
spring-bean(註解方式-管理及依賴註入)
sca 支持 nbsp 開啟 const tex ng- autowire 作用 Bean管理(註解方式)
1、添加註解的依賴包:Spring-aop.jar
2、配置spring的XML文件的引入(查官方源碼)
3、開啟註解的掃描
<context:compon
Spring Bean注入/單例理解/迴圈依賴
理解迴圈依賴問題,首先明白spring有四種注入方式。
第一種,SET注入a類中持有b類的引用,並且a類有b的set方法。在bean中新增<property>標籤即可注入。實質上是將b例項化,然後呼叫set方法注入。
<bean id="a" class="com.qunar.poj
spring中注入方式
注入簡介
Spring注入可以理解為是對一個物件進行初始化,也就是省去new的這個步驟,類似於工廠模式一樣,通過一個工廠製造出這個物件,如果遇到修改,只需要改一處就行了。實現spring注入一般有兩種方法,配置檔案,或者用註解。各有不同的作用。
注意:本文中涉及到所以
通過Spring Bean 注入static變數,來設計一套適合測試,開發,生產環境的配置項
(http://blog.csdn.net/initphp/article/details/8834844)
這邊文章的目的主要是為了在spring開發web專案的時候,讓我們的測試,開發,生產環境的配置項
.properties作為配置檔案。
我們首先需要建
spring bean 注入失敗的幾種原因
1.異常資訊
2.有可能引起的原因:
1.在applicationContext-service.xml的配置檔案裡的包掃描不對
2.在web.xml裡沒有載入spring容器
3.分散式工
Spring依賴注入方式,為什麼Spring4.0提倡使用建構函式注入方式?
先回答題目中的問題:
基於建構函式或基於setter的DI?
何時使用構造注入,何時使用setter注入,經驗法則是:強制依賴用構造,可選依賴用Setter。注意,在settter方法上使用@Required註解即可令屬性強制依賴。 Spring 團隊建議,構造注入的例項是不
Spring Bean配置方式之三:註解配置
Spring提供通過掃描類路徑中的特殊註解類來自動註冊Bean定義。同註解驅動事務一樣需要開啟自動掃描並註冊Bean定義支援,使用方式如下(resources/chapter12/ componentDefinitionWithAnnotation.xml):
jav
Java學習筆記38:通過Spring Bean 注入static變數,來設計一套適合測試,開發,生產環境的配置項
這邊文章的目的主要是為了在spring開發web專案的時候,讓我們的測試,開發,生產環境的配置項
.properties作為配置檔案。
我們首先需要建立一個config資料夾,然後建立開發,測試,生產環境的.properties配置項檔案。
例如,dev.proper
Spring Bean註冊方式小結
IOC容器
Spring的核心是一個IOC容器,管理著我們向容器註冊的所有bean。下面我們來看下兩種向容器註冊bean的方式,
Reader
BeanDefinitionReader的使用方式如下,
import org.springfra
spring依賴注入方式及其優缺點
1 public class ExampleBean
2 {
3 private AnotherBean beanOne;
4 private YetAnotherBean beanTwo;
5 private int i;
6 public ExampleBean(Anoth
Spring的注入方式--構造方法--解決需要在構造方法裡面去初始化全域性變數
構造方法注入
public class UserService implements IUserService {
private IUserDao userDao;
public UserService(IUserDao userDao) {
在ServletContextListener 的實現類中(使用Spring @Value 註解的方式讀取配置檔案、或者注入Spring bean)
在ServletContextListener 的實現類中 使用Spring @Value 註解的方式讀取配置檔案
我想向ServletContextListener中通過Spring @value 的方法讀取 properties 配置檔案資訊,但是我開始的方法不行
public class MyLi
spring bean的三種注入方式
依賴注入:讓呼叫類對某一介面實現類的依賴關係由第三方注入,以移除呼叫類對某一介面實現類的依賴。
接下來將詳細的向大家介紹Spring容器支援的三種依賴注入的方式以及具體配置方法:
• 屬性注入方法
• 建構函式注入方法
• 工廠方法注入方法
一
Spring Bean的注入方式 & 在程式碼中獲取bean的方式
Spring Bean的注入方式依賴注入是一個讓物件只通過構造引數,工廠方法的引數或者配置的屬性來定義他們的依賴的過程。依賴注入主要使用以下幾種方式:1. 基於建構函式的注入基於建構函式的依賴注入是由IoC容器來呼叫類的建構函式,建構函式的引數代表這個Bean所依賴的物件。在
Spring中bean注入初始化方式—通過註解@Configuration @bean
雖然 2.0 版本釋出以來,Spring 陸續提供了十多個註解,但是提供的這些註解只是為了在某些情況下簡化 XML 的配置,並非要取代 XML 配置方式。這一點可以從 Spring IoC 容器的初始化類可以看出:ApplicationContext 介面的最常用的實現類是
深入學習Spring框架之二構造器注入方式裝配Bean
這一節我們來看看怎麼使用Spring建立我們的Bean物件。
容器是Spring的核心,Spring的容器有兩種型別:Bean工廠,由BeanFactory介面定義,是最簡單的容器;以及應用上下文,由ApplicationContext定義。Bean工廠對於
在Servlet中可訪問Spring bean物件,但是不能直接以注入的方式引用
在Servlet中使用註解的方式引用Spring bean物件,會報空指標,因此可以在init()方法中通過WebApplicationContextUtils.getWebApplicationContext(serv