spring学习(spring-DI(字符串或对象引用注入、集合注入)(XML配置))

目录

一、单个字符串或对象引用的注入。

(1)简单案例演示。

1、项目的基本结构和类介绍。

2、接口"UserDao"代码。

3、实现类"UserDaoImpl"代码。

4、spring配置文件。

5、测试类(MainApp)。

6、查看执行结果。(对应成员变量成功注入!)

二、集合类型(对象)注入。

(1)XMind图解。(格式和基本用法)

(2)简单案例演示。

1、项目的基本结构和类介绍。

2、接口"UserDao"代码。

3、实现类"UserDaoImpl"代码。

4、spring配置文件。(此处重点)

5、测试类(MainApp)。

6、查看执行结果。(对应成员变量成功注入!)


一、单个字符串或对象引用的注入。

(1)简单案例演示。
1、项目的基本结构和类介绍。
  • 在UserDaoImpl实现类中。拥有两个成员属性(字符串类型与引用类型(对象))。提供对应的setter方法。提供save()方法,且方法中打印字符串类型与引用类型(对象)的数据。
  • 测试时:通过容器对象获取spring容器管理的"UserDaoImpl"的实例化对象。再调用本身的save方法。save()方法再执行其他逻辑。
  • pom.xml文件中引入spring-context的依赖坐标。


2、接口"UserDao"代码。
  • 提供抽象方法save()。实现类"UserDaoImpl"再去实现save()方法。
java 复制代码
package com.fs.dao;

public interface UserDao {
    //UserDao的save方法
    void save();
}
3、实现类"UserDaoImpl"代码。
  • 实现接口"UserDao"并实现其save()方法。
  • 提供成员变量(str(字符串)、user(对象))。且提供相应的setter方法。使用注入的方式获取对应的值和实例化bean。
java 复制代码
package com.fs.dao.impl;

import com.fs.dao.UserDao;
import com.fs.entity.User;

public class UserDaoImpl implements UserDao {
    //字符串属性
    String str;
    //类对象属性
    User user;

    public void setStr(String str) {
        this.str = str;
    }

    public void setUser(User user) {
        this.user = user;
    }

    @Override
    public void save() {
        System.out.println("UserDaoImpl save...");
        //打印注入的字符串属性
        System.out.println(str);
        //打印注入的类对象属性
        System.out.println(user);
        user.setUsername("zhangsan");
        user.setPassword("123456");
        System.out.println("用户名:"+user.getUsername()+",密码:"+user.getPassword());
    }
}
4、spring配置文件。
  • 使用标签<bean>、<property>、<ref>。以及属性"name"、"value"、"bean"。
  • 具体用法各位自己查资料或者看博主介绍或者相信大家懂得!
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">
    
    <!--配置UserDapImpl的bean-->
    <bean id="userDao" class="com.fs.dao.impl.UserDaoImpl">
        <!--使用<property>标签给成员属性赋值-->
        <property name="str" value="helloworld"></property>
        <property name="user">
            <!--使用<ref>标签给引用类型(对象)赋值-->
            <ref bean="user"></ref>
        </property>
    </bean>
    
    <!--配置实体类User对象的bean-->
    <bean id="user" class="com.fs.entity.User"></bean>
</beans>
5、测试类(MainApp)。
  • 使用ApplicationContext容器加载配置文件。再调用容器对象的getBean()方法获取"UserDaoImpl"类的实例化bean。通过该bean对象调用save()方法。
java 复制代码
package com.fs.test;

import com.fs.dao.impl.UserDaoImpl;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainApp {
    public static void main(String[] args) {
        //使用IoC容器(ApplicationContext)获取spring容器管理的bean对象
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("springC.xml");
        //2.通过<bean>标签的唯一标识id获取配置的bean对象
        Object obj = context.getBean("userDao");
        //强制转换
        UserDaoImpl userDao = (UserDaoImpl) obj;
        //调用UserDaoImpl中的save方法
        userDao.save();

    }
}
6、查看执行结果。(对应成员变量成功注入!)

二、集合类型(对象)注入。

(1)XMind图解。(格式和基本用法)

(2)简单案例演示。
1、项目的基本结构和类介绍。
  • 话不多说。拿上面案例简单修改即可,添加几个成员属性再依次通过setter注入即可。
  • 数组对象。int[] array。
  • List集合对象。List<String> list1。List<User> list2。
  • Set集合对象。Set<String> set。
  • Map集合对象。Map<String,String> map。
  • Properties对象:properties。

  • 关于类的代码基本不变化。最大变化------spring配置文件(各种标签的使用)。

2、接口"UserDao"代码。
  • 同样提供抽象方法save()。实现类"UserDaoImpl"再去实现save()方法。
java 复制代码
package com.fs.dao;

public interface UserDao {
    //UserDao的save方法
    void save();
}
3、实现类"UserDaoImpl"代码。
  • 同样实现接口"UserDao"并实现其save()方法。
  • 创建需要测试的数组与几个集合的成员变量。并提供相应的setter方法。以便完成相应的值的注入!


  • save()方法除了打印自身需要的外,还需要依次打印对应的数组和几个集合对象的值。因为要测试是否成功的依靠配置文件(spring.xml)完成注入!
java 复制代码
package com.fs.dao.impl;
import com.fs.dao.UserDao;
import com.fs.entity.User;

import java.util.*;

public class UserDaoImpl implements UserDao {

    //基本数据类型的数组对象
    private int[] array;

    //List<String>集合对象
    private List<String> list1;
    //List<User>集合对象
    private List<User> list2;

    //Set<String>集合对象
    private Set<String> set;

    //Map<String,String>集合对象
    private Map<String,String> map;

    //Properties类对象
    private Properties properties;

    //提供相应的setter方法


    public void setArray(int[] array) {
        this.array = array;
    }

    public void setList1(List<String> list1) {
        this.list1 = list1;
    }
    public void setList2(List<User> list2) {
        this.list2 = list2;
    }

    public void setSet(Set<String> set) {
        this.set = set;
    }

    public void setMap(Map<String, String> map) {
        this.map = map;
    }

    public void setProperties(Properties properties) {
        this.properties = properties;
    }

    @Override
    public void save() {
        System.out.println("UserDaoImpl save...");
        //将数组转换为字符串形式。以便打印!
        System.out.println("遍历数组:"+ Arrays.toString(array));
        //遍历List集合
        System.out.println("遍历list1:"+list1);
        System.out.println("遍历list2:"+list2);
        //遍历Set集合
        System.out.println("遍历Set:"+set);
        //遍历Map集合
        System.out.println("遍历Map:"+map);
        //
        System.out.println("遍历Properties:"+properties);
    }
}
4、spring配置文件。(此处重点)
  • 使用标签<bean>、<property>、<ref>、<array>、<list>、<set>、<value>、<map>、<entry>、<props>、<prop>等等。以及属性"key"、"value"、"bean"等等。
  • 具体用法各位自己查资料或者看博主介绍或者相信大家懂得!
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">

    <!--配置UserDapImpl的bean-->
    <bean id="userDao" class="com.fs.dao.impl.UserDaoImpl">
        <!--配置成员属性:数组-->
        <property name="array">
            <array>
                <value>666</value>
                <value>888</value>
                <value>999</value>
            </array>
        </property>
        <!--配置成员属性:list集合-->
        <property name="list1">
            <list>
                <value>abc</value>
                <value>hello</value>
                <value>world</value>
            </list>
        </property>
        <property name="list2">
            <list>
                <!--根据不同的id-->
                <ref bean="user"></ref>
                <ref bean="use1"></ref>
                <ref bean="use2"></ref>
            </list>
        </property>
        <!--配置成员属性:Set集合-->
        <property name="set">
            <set>
                <value>lisi</value>
                <value>zhangsan</value>
                <value>wangwu</value>
            </set>
        </property>
        <!--配置成员属性:Map集合-->
        <property name="map">
            <map>
                <entry key="country" value="china"></entry>
                <entry key="province" value="hunan"></entry>
                <entry key="city" value="huaihua"></entry>
            </map>
        </property>
        <!--配置成员属性:Properties对象-->
        <property name="properties">
            <props>
                <prop key="name">hyl</prop>
                <prop key="age">18</prop>
                <prop key="sex">male</prop>
            </props>
        </property>
    </bean>

    <!--配置实体类User对象的bean-->
    <!--为了测试-->
    <bean id="user" class="com.fs.entity.User"></bean>
    <bean id="use1" class="com.fs.entity.User"></bean>
    <bean id="use2" class="com.fs.entity.User"></bean>
</beans>
5、测试类(MainApp)。
  • 使用ApplicationContext容器加载配置文件。再调用容器对象的getBean()方法获取"UserDaoImpl"类的实例化bean。通过该bean对象调用save()方法。save()方法中打印配置文件注入每一个被注入的成员属性。
java 复制代码
package com.fs.test;

import com.fs.dao.impl.UserDaoImpl;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainApp {
    public static void main(String[] args) {
        //使用IoC容器(ApplicationContext)获取spring容器管理的bean对象
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("springC.xml");
        //2.通过<bean>标签的唯一标识id获取配置的bean对象
        Object obj = context.getBean("userDao");
        //强制转换
        UserDaoImpl userDao = (UserDaoImpl) obj;
        //调用UserDaoImpl中的save方法
        userDao.save();

    }
}
6、查看执行结果。(对应成员变量成功注入!)
  • 不必多言。标签使用对,属性设置对,就不会出问题。
相关推荐
奶香臭豆腐3 分钟前
C++ —— 模板类具体化
开发语言·c++·学习
hanbarger13 分钟前
mybatis框架——缓存,分页
java·spring·mybatis
cdut_suye21 分钟前
Linux工具使用指南:从apt管理、gcc编译到makefile构建与gdb调试
java·linux·运维·服务器·c++·人工智能·python
苹果醋333 分钟前
2020重新出发,MySql基础,MySql表数据操作
java·运维·spring boot·mysql·nginx
小蜗牛慢慢爬行34 分钟前
如何在 Spring Boot 微服务中设置和管理多个数据库
java·数据库·spring boot·后端·微服务·架构·hibernate
azhou的代码园38 分钟前
基于JAVA+SpringBoot+Vue的制造装备物联及生产管理ERP系统
java·spring boot·制造
波音彬要多做1 小时前
41 stack类与queue类
开发语言·数据结构·c++·学习·算法
wm10431 小时前
java web springboot
java·spring boot·后端
smile-yan1 小时前
Provides transitive vulnerable dependency maven 提示依赖存在漏洞问题的解决方法
java·maven
老马啸西风1 小时前
NLP 中文拼写检测纠正论文-01-介绍了SIGHAN 2015 包括任务描述,数据准备, 绩效指标和评估结果
java