spring:xml方式调用构造方法创建Bean,调用set方法配置字段

如题:

要创建的Bean类UserServiceImpl02 :

java 复制代码
package com.itheima.service.impl;


import com.itheima.dao.interfaces.InterfaceUserDao;
import com.itheima.service.interfaces.InterfaceUserService;


/**
 * @copyright 2003-2024
 * @author    qiao wei
 * @date      2024-12-23
 * @version   1.0
 * @brief     
 * @history   name
 *            date
 *            brief
 */
public class UserServiceImpl02 implements InterfaceUserService {
    
    public UserServiceImpl02(InterfaceUserDao paramUserDao, double paramValue) {
        this.userDao = paramUserDao;
        this.value01 = paramValue;
//        paramUserDao.print();
//        System.out.println("类UserServiceImpl02调用有参构造函数。---" + userDaoABC);
//        System.out.println(value01);
    }
    
    @Override
    public void show() {
        System.out.println("类UserServiceImpl02的show方法。");
        System.out.println("打印字段数据。userDao:" + userDao + ",value01:" + value01);
        System.out.println(userDaoABC);
    }

    @Override
    public void setUserDao001(InterfaceUserDao userDao) {
//        System.out.println("调用属性设置方法。");
        this.userDaoABC = userDao;
    }
    
    private InterfaceUserDao userDao;
    
    private InterfaceUserDao userDaoABC;
    
    private double value01;
}
复制代码
InterfaceUserService接口:
java 复制代码
package com.itheima.service.interfaces;


import com.itheima.dao.interfaces.InterfaceUserDao;


/**
 * @copyright 2003-2024
 * @author    qiao wei
 * @date      2024-12-22
 * @version   1.0
 * @brief     
 * @history   name
 *            date
 *            brief
 */
public interface InterfaceUserService {
    
    void show();
    
    void setUserDao001(InterfaceUserDao userDao);
}

类中的字段类UserDaoImpl :

java 复制代码
package com.itheima.dao.impl;


import com.itheima.dao.interfaces.InterfaceUserDao;


/**
 * @copyright 2003-2025
 * @author    qiao wei
 * @date      2025-03-24
 * @version   1.0
 * @brief     
 * @history   name
 *            date
 *            brief
 */
public class UserDaoImpl implements InterfaceUserDao {
    
    public UserDaoImpl() {
        
    }
    
    @Override
    public void print() {
        System.out.println("UserDaoImpl类实例,继承接口InterfaceUserDao");
    }
}

字段实现的接口InterfaceUserDao :

java 复制代码
package com.itheima.dao.interfaces;


/**
 * @copyright 2003-2024
 * @author    qiao wei
 * @date      2024-12-22
 * @version   1.0
 * @brief     
 * @history   name
 *            date
 *            brief
 */
public interface InterfaceUserDao {
    
    void print();
}

类结构:

复制代码
userServiceImpl02.xml配置文件:
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"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
       http://www.springframework.org/schema/context 
       http://www.springframework.org/schema/context/spring-context-4.0.xsd
       http://www.springframework.org/schema/tx 
       http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">
    
    <bean id="serviceImpl02"
          class="com.itheima.service.impl.UserServiceImpl02">
        
        <!--    构造方法参数    -->
        <constructor-arg name="paramUserDao"
                         ref="userDao"
        >
        </constructor-arg>
        
        <constructor-arg name="paramValue"
                         value="100.0"
        >
        </constructor-arg>
        
        <!--    setUserDao001方法参数    -->
        <property name="userDao001"
                  ref="userDao"
        >
        </property>
    </bean>
    
    <bean id="userDao"
          class="com.itheima.dao.impl.UserDaoImpl"
    >
    </bean>
</beans>

测试类UserServiceImpl02Test:

java 复制代码
package com.itheima.service.impl;


import org.junit.jupiter.api.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.itheima.service.interfaces.InterfaceUserService;

import static org.junit.jupiter.api.Assertions.*;


/**
 * @copyright 2003-2025
 * @author    qiao wei
 * @date      2025-04-02
 * @version   1.0
 * @brief     
 * @history   name
 *            date
 *            brief
 */
class UserServiceImpl02Test {
    
    @Test
    public void test02() {
        ClassPathXmlApplicationContext applicationContext =
            new ClassPathXmlApplicationContext("./xml/service/userServiceImpl02.xml");

        InterfaceUserService userService =
            (InterfaceUserService) applicationContext.getBean("serviceImpl02");
        userService.show();
    }
}

运行结果:

java 复制代码
类UserServiceImpl02的show方法。
打印字段数据。userDao:com.itheima.dao.impl.UserDaoImpl@24105dc5,value01:100.0
com.itheima.dao.impl.UserDaoImpl@24105dc5

可见,构造方法,set方法均在创建Bean时根据配置调用。

相关推荐
唐山柳林2 分钟前
城市生命线综合管控系统解决方案-守护城市生命线安全
java·安全·servlet
PgSheep5 分钟前
Spring Cloud Gateway 聚合 Swagger 文档:一站式API管理解决方案
java·开发语言
蒂法就是我1 小时前
详细说说Spring的IOC机制
java·后端·spring
程序员拂雨1 小时前
Java知识框架
java·开发语言
秋野酱1 小时前
基于javaweb的SpringBoot高校图书馆座位预约系统设计与实现(源码+文档+部署讲解)
java·spring boot·后端
举一个梨子zz2 小时前
Java—— 可变参数、集合工具类、集合嵌套、不可变集合
java·开发语言·intellij-idea·需求分析
算法给的安全感2 小时前
bfs-最小步数问题
java·算法·宽度优先
jstart千语2 小时前
【消息队列】RabbitMQ基本认识
java·服务器·分布式·rabbitmq
泽02022 小时前
C++类和对象之相关特性
java·开发语言·c++
唐僧洗头爱飘柔95272 小时前
【SSM-SpringMVC(二)】Spring接入Web环境!本篇开始研究SpringMVC的使用!SpringMVC数据响应和获取请求数据
java·spring·文件上传·页面跳转·数据响应·获取请求数据·静态资源访问