1. 程式人生 > >Spring 裝配Bean的構造注入

Spring 裝配Bean的構造注入

在spring裝配bean中還有一種Set注入的替代,那就是構造引數的注入。

set注入是一種直接方式,缺點是它假設了所 有的可變屬性都可以通過set方法訪問到。例如有些屬性在建立時設定一次,以後不再改變。替代方式是通過建構函式設定一些屬性值。還有它無法清晰表達哪些屬性是必須的,哪些是可選的,構造注入的優勢是通過構造強制依賴關係,不可能例項化不完全的或無法使用的bean。下面是構造器的幾種注入方式:

1.通過建構函式注入 (原始方式)

2.根據構造器引數的型別

3.根據索引index注入

4.根據引數名稱注入

EmployeeBean.java

public class EmployeeBean
{
private String name; private Double salary; private Dept dept; private String sex; // 構造器函式 public EmployeeBean(String name, Double salary, Dept dept, String sex) { super(); this.name = name; this.salary = salary; this.dept = dept; this
.sex = sex; } @Override public String toString() { return "EmployeeBean [name=" + name + ", salary=" + salary + ", dept=" + dept + ", sex=" + sex + "]"; } }

Dept.java

public class Dept {

    private String name;
    private String deptno;

    public void
setName(String name) { this.name = name; } public void setDeptno(String deptno) { this.deptno = deptno; } @Override public String toString() { return "Dept [name=" + name + ", deptno=" + deptno + "]"; } }

spring-constructor.java

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- private String name; private Double salary; private Dept dept; -->

    <!-- 0、通過建構函式注入 (原始方式)-->
    <!-- <bean id="employeeBean" class="www.csdn.spring.constructor.bean.EmployeeBean">
        <constructor-arg value="王曉而" />
        <constructor-arg value="100.0" />
        <constructor-arg ref="dept" />
        <constructor-arg value="男" />
    </bean> -->

    <!-- 下面三種解決1存在的問題 -->

    <!-- 1、根據構造器引數的型別 -->
    <bean id="employeeBean" class="www.csdn.spring.constructor.bean.EmployeeBean">
        <constructor-arg type="java.lang.String" value="陳紅均" />
        <constructor-arg type="java.lang.String" value="男" />
        <constructor-arg type="java.lang.Double" value="100.0" />
        <constructor-arg type="www.csdn.spring.constructor.bean.Dept"
            ref="dept" />
    </bean>

    <!-- 2、根據索引index注入 -->
    <!-- <bean id="employeeBean" class="www.csdn.spring.constructor.bean.EmployeeBean">
        <constructor-arg index="0" value="陳紅均" />
        <constructor-arg index="1" value="100.0" />
        <constructor-arg index="2" ref="dept" />
        <constructor-arg index="3" value="女" />
    </bean> -->
    <!-- 3、根據引數名稱注入 -->
    <!-- <bean id="employeeBean" class="www.csdn.spring.constructor.bean.EmployeeBean">
        <constructor-arg name="name" value="陳紅均" />
        <constructor-arg name="salary" value="100.0" />
        <constructor-arg name="dept" ref="dept" />
        <constructor-arg name="sex" value="男" />
    </bean>-->
    <bean id="dept" class="www.csdn.spring.constructor.bean.Dept">
        <property name="name" value="CSDN教育事業部" />
        <property name="deptno" value="0x0001" />
    </bean> 

</beans>

相關推薦

Spring 裝配Bean構造注入

在spring裝配bean中還有一種Set注入的替代,那就是構造引數的注入。 set注入是一種直接方式,缺點是它假設了所 有的可變屬性都可以通過set方法訪問到。例如有些屬性在建立時設定一次,以後不再改變。替代方式是通過建構函式設定一些屬性值。還有它無法清晰表

Spring的《XML顯式裝配bean》- 注入List或則set

這一節主要講解spring注入list或則set型別的屬性 本blog舉的例子是:不同的廚師使用不同個烤爐製作出不同的蛋糕。 (1)domain 蛋糕類: package spring.ch1.topic11; /** * Created

spring裝配bean及引數注入

個人使用建議:不要使用3.2.4版本  因為在進行xml檔案載入的時候會出錯。 首先搭建環境 Student.java package com.demo.entity; public class Student { private String name;

Spring裝配bean--02通過Java代碼裝配bean

三方 應用 context his 單獨 stc ring -- oid Spring容器負責創建應用程序中的bean並通過DI來協調這些對象之間的關系 Spring提供了三種主要的裝配機制: 在XML中進行顯式配置 在Java中進行顯式配置 隱式

java之Spring裝配Bean(手動裝配、自動裝配、註解裝配

fault tran 常見 成員 如果 on() base 反轉 tor 在上一篇控制反轉中我們看到了依靠一個Bean文件來實現對代碼的控制,可謂十分便捷,再也不用去實例化對象了,2333~~~ 1.手動裝配 1 <bean id="todo" class="

Spring 裝配Bean

spring 裝配bean spring裝配bean的三種機制 在XML中進行顯示配置 在Java中進行顯示配置 隱式的bean發現機制和自動裝配 自動化裝配bean Spring從兩個角度來實現自動化裝配 元件掃描:Spring會自動發現應用上下文中所建立的bean 自

Spring裝配Bean(基於XML)

                                               通過XML裝配Bean 在Spring剛剛出現的時候,XML是描述配置的主要配置。隨著Spring的發展,自動化裝配和基於Java的配置成為了主流,但理解XML配置Bean是很有必

Spring裝配Bean(基於Java程式碼裝配)

                                             通過Java配置裝配Bean 在很多的情況下,Spring基於組建掃描和自動裝配是最佳方式。但是有時候,我們必須使用顯示的裝配。例如,我們使用一個第三方庫,我們不可能為庫中的類添加註釋

Spring 裝配Bean 基於註解

註解:就是一個類,使用@註解名稱 開發時:我們使用註解 取代 xml配置檔案。 1 @Component取代<bean class=""> @Component(“id”) 取代 <

springBean注入(1)

Bean的注入包含的內容: XML注入 構造方法注入、靜態工廠注入、例項工廠注入,屬性注入的幾種方式(構造方法注入,set方法注入,p名稱空間注入,物件,集合、陣列、Map,Properties) Java注入:@Configuration、@Bean 自動注入:

springbean注入內部類

在spring中注入內部類,有可能會遇到如下異常資訊: 2014-5-1421:52:45 org.springframework.context.support.AbstractApplicationContext prepareRefresh 資訊:Refreshing org.springframe

Springbean注入內部類

在spring中注入內部類,有可能會遇到如下異常資訊: 2014-5-14 21:52:45 org.springframework.context.support.AbstractApplicationContext prepareRefresh 資訊: Refreshi

spring裝配Bean過程以及Bean例項化過程

<ol class="linenums" style="margin:0px; word-wrap:break-word; padding:0px 0px 0px 40px"><li class="L0" style="word-wrap:break-word; padding-left:

學習SpringBean注入

現在細化一下關於Bean的三種裝配方式 1.自動裝配 (1)註解解釋 首先有這麼幾個註解: @Component : 這個註解標識在一個類上,用來表明該類是一個元件,可以被注入Spring容器中。 @Configration: 註解在類上,表明這

SpringBean注入

Bean的配置中介紹的是Bean宣告問題,在哪宣告怎麼宣告的問題。Bean的注入是怎麼例項化,怎麼注入的問題。Bean注入的方式有兩種,一種是在XML中配置,另一種則是使用註解的方式注入。 一、XML方式注入 XML方式注入一般有三種方式:屬性注入、建構函式注入和工廠方法注入。 一、屬性注入在傳統的物件例項化

Spring4 實戰筆記(1):裝配bean—依賴注入的本質

這種字串形式的表示雖然可以,但是不具備“型別安全”,因此Spring也提供了更加型別安全的機制,即通過類或者介面來設定掃描機制的目標目錄,例如: @Configuration @ComponentScan(basePackageClasses = {CDPlayer.class, DVDPlayer.cl

Springbean.xml注入物件

Spring的物件注入 寫一個類 public class Circle { @Override public String toString() { return "Circle [radius=" + radius +

Spring裝配Bean -- 通過Java程式碼裝配Bean

建立可被發現的Bean:        建立CD介面:package main.java.Demo1; /** * @author [email protected] * @date 18-4-15 下午6:53 */ public interface C

Spring裝配bean的三種方式

spring裝配bean有顯式和隱式兩種:          1.顯式的配置:                   1).通過javaConfig來配置(@Configuration和@Bean結合)

Spring裝配bean的3種方式

記錄自己學習Spring的歷程,參考書:spring in action首先自建一個SpringMVC專案;自建專案過程中遇到兩個eclipse的問題:1.    建立maven專案,但是沒有webContent檔案        右鍵專案-》Properties-》Proj