spring学习笔记二:spring使用构造方法注入(set方式注入)

本文介绍了一个基于Spring框架的依赖注入示例项目。项目通过配置文件applicationContext.xml定义了多个Bean,包括UserManagerImpl和两个不同数据库实现的UserDao。通过构造方法注入的方式,展示了如何在UserManagerImpl中注入特定实现的UserDao。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目目录树:

1、spring的依赖包配置
* SPRING_HOME/dist/spring.jar
* SPRING_HOME/lib/log4j/log4j-1.2.14.jar
* SPRING_HOME/lib/jakarta-commons/commons-logging.jar

2、提供spring配置文件applicationContext.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: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-2.0.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
        
        <bean id="userManagerImpl" class="com.donghai.manager.impl.UserManagerImpl">
            <!-- 使用set方式注入 
            <property name="userDao" ref="userDao4Mysql"></property>
            -->
            <!-- 使用构造方法注入 -->
            <constructor-arg index="0" ref="userDao4Oracle" />
        </bean>
        
        <bean id="userDao4Mysql" class="com.donghai.dao.impl.UserDao4Mysql" />
         <bean id="userDao4Oracle" class="com.donghai.dao.impl.UserDao4Oracle" />  
</beans>

 

3、提供log4j.properties配置文件

4.环境中的类文件

UserDao.java

package com.donghai.dao;

public interface UserDao {

    public void addUser(String name, String password);
}

UserDao4Mysql.java

package com.donghai.dao.impl;

import com.donghai.dao.UserDao;

public class UserDao4Mysql implements UserDao {

    @Override
    public void addUser(String name, String password) {

        System.out.println("UserDao-->Mysql: name -->" + name + " password-->" + password);
    }


}

UserDao4Oracle.java

package com.donghai.dao.impl;

import com.donghai.dao.UserDao;

public class UserDao4Oracle implements UserDao {

    @Override
    public void addUser(String name, String password) {

        System.out.println("UserDao-->Oracle: name -->" + name + " password-->" + password);
    }

}

UserManager.java

package com.donghai.manager;

public interface UserManager {

    public void addUser(String name, String password);
}

UserManagerImpl.java

package com.donghai.manager.impl;

import com.donghai.dao.UserDao;
import com.donghai.manager.UserManager;

public class UserManagerImpl implements UserManager {

    private UserDao userDao;
    
//    public void setUserDao(UserDao userDao) {
//        this.userDao = userDao;
//    }

    public UserManagerImpl(UserDao userDao){
        this.userDao = userDao;
    }
    @Override
    public void addUser(String name, String password) {
        this.userDao.addUser(name, password);

    }

}

Client.java

package com.donghai.client;


import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.donghai.manager.UserManager;

public class Client {

    public static void main(String[] args){
        ApplicationContext acc = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserManager um = (UserManager)acc.getBean("userManagerImpl");
        um.addUser("daidonghai", "ddpassword");
    }
}

5.测试结果

如果想使用UserDao4Mysql,修改ApplicationContext.xml文件中的引用即可

转载于:https://www.cnblogs.com/djoker/p/6426806.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值