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>

 

原文地址:https://www.cnblogs.com/instead-everyone/p/13863472.html