当前位置: 首页 > news >正文

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

如题:

要创建的Bean类UserServiceImpl02 :

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接口:
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 :

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 :

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 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:

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();
    }
}

运行结果:

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

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

相关文章:

  • 视频智能分析平台EasyCVR打造智能视频监控烟火预警系统,助力烟花鞭炮厂坚固安全防线
  • pyautogui是什么:自动化鼠标和键盘操作
  • Laravel 使用 事件和监听器实现 数据状态变更
  • 5分钟用Docker Desktop新功能搭建Python+AI开发环境
  • docker 运行自定义化的服务-后端
  • 渗透测试实战:使用Hydra破解MySQL弱口令(附合法授权流程+防御方案)
  • Cannot find module ‘vue‘ or its corresponding type declarations
  • 实战教程:使用JetBrians Rider快速部署与调试PS5和Xbox上的UE项目
  • 《Vue Router实战教程》3.动态路由匹配
  • 2022年全国职业院校技能大赛 高职组 “大数据技术与应用” 赛项赛卷(4卷)任务书
  • 3D激光轮廓仪知识整理
  • 第3节:深度学习常用数据集介绍
  • 算法--递归实现【DFS】
  • TDengine 语言连接器(Rust)
  • 索尼相机视频文件格式规格
  • JAVA 导出 word
  • Java树结构通用工具类
  • Spark基础知识
  • Google Chrome Canary版官方下载及安装教程【适用于开发者与进阶用户】
  • SpringMVC基础二(RestFul、接收数据、视图跳转)
  • 网站跟域名备案数量/潍坊网站开发公司
  • 福州营销型网站建设/青岛seo招聘
  • 东胜做网站/个人网页免费域名注册入口
  • 满屏滚动网站咋做/google框架三件套
  • 怎么做卡盟网站免费/百度发广告需要多少钱
  • 网站运营有前途吗/美国婚恋网站排名