1. 程式人生 > 實用技巧 >ICO注入屬性值操作

ICO注入屬性值操作

   IOC注入屬性

一:使用外部bean注入:

  步驟一:在配置檔案中例項化實現類:

    <bean id="userDaoImpl" class="com.action.spring.dao.UserDaoImpl"></bean>

  步驟二: 然後例項化使用類:

    <bean id="userService" class="com.action.spring.service.UserService"></bean>

  步驟三:此時通過注入外部Bean的方式注入屬性。

    <property name="userDao" ref="userDaoImpl"></property>

其中name為屬性名。此處需要注意的是和普通值使用的value不同的是,注入外部Bean需要使用 ref 屬性。

直接上程式碼: 建立UserService類和UserDao類,其中UserDao為抽象類。對UserDao進行重寫UserDaoImpl類。

  1. UserServoce使用類:

    package com.action.spring.service;
    ​
    import com.action.spring.dao.UserDao;
    import com.action.spring.dao.UserDaoImpl;
    ​
    public class UserService {
        
        
    private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } ​ public void add() throws Exception { System.out.println("Service add...................."); userDao.update(); /* 傳統方法 * UserDao userDao = new UserDaoImpl(); * userDao.update();
    */ } }

    1. UserDao基類

    package com.action.spring.dao;
    ​
    public interface UserDao {
        public abstract void update() throws Exception;
    }
    1. UserDao類的實現UserDaoImpl

    package com.action.spring.dao;
    ​
    public class UserDaoImpl implements UserDao{
    ​
        private String uname;
        public void setUname(String uname) {
            this.uname = uname;
        }
        @Override
        public void update() throws Exception {
            System.out.println("update...............");
        }
    }

    1. 重點重點: 配置XML配置檔案

    <?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"><!-- 注入外部bean -->
    <bean id="userService" class="com.action.spring.service.UserService">
        <!--將userService中的元素userDao初始化為實現類userDaoImpl-->
        <property name="userDao" ref="userDaoImpl"></property>
    </bean>
    <bean id="userDaoImpl" class="com.action.spring.dao.UserDaoImpl"></bean>
        
    </beans>

二:使用內部bean注入屬性

其實也就是不使用ref屬性,直接使用巢狀在內部bean:

<?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">
​
​
<bean id="userService" class="com.action.spring.service.UserService">
    <!--將userService中的元素userDao初始化為實現類userDaoImpl-->
    <property name="userDao">
        <!--使用巢狀來是實現內部bean,但是個人建議最好用外部bean,更加清晰,而且可以例項化物件-->
        <bean id="userDao" class="com.action.spring.dao.UserDao"></bean>
    </property>
</bean>
<bean id="userDaoImpl" class="com.action.spring.dao.UserDaoImpl"></bean>
    
</beans>

三:使用級聯賦值注入屬性:

  注意:級聯賦值的時候是需要有get方法獲取屬性的,沒有則會報錯

<bean id="userService" class="com.action.spring.service.UserService">
    <!--將userService中的元素userDao初始化為實現類userDaoImpl-->
    <property name="userDao">
        <bean id="userDao" class="com.action.spring.dao.UserDao"></bean>
    </property>
    
    <!--使用級聯賦值來直接給其中的元素賦值,但是注意,賦值的這個元素一定要有get方法來獲取-->
    <property id="userDao.name" value="hanxiao"></property>
    
</bean>
<bean id="userDaoImpl" class="com.action.spring.dao.UserDaoImpl"></bean>
    
</beans>

四:IOC注入集合型別屬性

    一:注入陣列型別屬性

    二:注入List型別屬性

    三:注入Map型別屬性

這個比較簡單。不直接設定value,而是在property標籤下面加入map,list,陣列的標籤,在他們的標籤下寫入多個value值

    四:放入多個物件的list

  使用ref+bean傳遞路徑,引用外部類

    五:提取部分型別屬性值eg:list:

<!--
    1.設定約束,在spring配置檔案中引入名稱util,設定xsi:schemLocation,將p名稱空間那個複製下來,然後把所有的beans換為util
        xmls:util="http://www.springframework.org/scheme/util"
        xsi:schemeLocation="http://www.springframework.org/scheme/util http://www.springframework.org/scheme/util/spring-util.xsd"
​
    2.使用util標籤完成對list集合注入提取:
    <util:list id="booklist">
        <value></value>
        <value></value>
    </util:list>
--><!--1.提取list集合型別屬性注入-->
<util:list id="bookList">
    <value>list1</value>
    <value>list2</value>
    <value>list3</value>
</util:list><!--提取list集合型別屬性注入使用,使用ref引入外部-->
<bean id="book" class="com.spring_test.book">
    <property name="list" ref="bookList"></property>
</bean>