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

发布于:2025-04-13 ⋅ 阅读:(17) ⋅ 点赞:(0)

如题:

要创建的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时根据配置调用。


网站公告

今日签到

点亮在社区的每一天
去签到