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


    项目目录树:

    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文件中的引用即可

  • 相关阅读:
    laravel 1对多,主键不是整型的坑
    laravel 修改默认Eloquent 映射 表名加s复数的方式
    linux开启与关闭防火墙
    laravel 队列使用(发邮件、短信等)
    linux下隐藏nginx版本及php版本信息
    laravel API开发,使用dingo/api
    80端口被占用
    中国大陆地区数据库-(省市县)总表
    未定义“RunCommand”属性
    按键精灵手机端代码通
  • 原文地址:https://www.cnblogs.com/djoker/p/6426806.html
Copyright © 2020-2023  润新知