微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring使用xml实现IOC原型

package com.chenxb.dao;

public interface UserDao {
    void getUser();
}
package com.chenxb.dao;

public class UserDaoImpl implements UserDao {

    @Override
    public void getUser() {
        System.out.println("获取User");
    }
}
package com.chenxb.dao;

public class UserDaoMysqLImpl implements UserDao {

    @Override
    public void getUser() {
        System.out.println("MysqL 获取User");
    }
}
package com.chenxb.dao;

public class UserDaoOracleImpl implements UserDao {

    @Override
    public void getUser() {
        System.out.println("Oracle 获取User");
    }
}
package com.chenxb.pojo;

import lombok.Data;

@Data
public class User {
    int id;
    String name;
    String password;
}
package com.chenxb.service;

public interface UserService {
    void getUser();
}
package com.chenxb.service;

import com.chenxb.dao.UserDao;
import com.chenxb.dao.UserDaoImpl;
import com.chenxb.dao.UserDaoMysqLImpl;
import com.chenxb.dao.UserDaoOracleImpl;

public class UserServiceImpl implements UserService {
    /**
     * 第一种做法
     * 普通的三层切换多个dao,只能去修改service中的new对象
     */
//    private UserDao userDao = new UserDaoImpl();
//    private UserDao userDao = new UserDaoMysqLImpl();
//    private UserDao userDao = new UserDaoOracleImpl();

    /**
     * 第二种写法
     * 利用set进行动态注入
     */
    private UserDao userDao;

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

    @Override
    public void getUser() {
        userDao.getUser();
    }
}
import com.chenxb.dao.UserDaoOracleImpl;
import com.chenxb.pojo.User;
import com.chenxb.service.UserService;
import com.chenxb.service.UserServiceImpl;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClasspathXmlApplicationContext;

public class MyTest {
    public static void main(String[] args) {
        /**
         * 第一种做法
         * 普通的三层切换多个dao,只能去修改service中的new对象
         */
//        UserService userService = new UserServiceImpl();
//        userService.getUser();

//        /**
//         * 第二种写法
//         * 使用set进行动态注入
//         */
//        UserService userService = new UserServiceImpl();
//        ((UserServiceImpl)userService).setUserDao(new UserDaoOracleImpl());
//        userService.getUser();

        /**
         * 第三种写法
         * 使用XML配置
         */
        //获取spring上下文对象
        ApplicationContext context = new ClasspathXmlApplicationContext("user.xml");
        //对象都在spring上下文对象里,要用时直接取
        UserServiceImpl userServiceImpl = (UserServiceImpl) context.getBean("UserServiceImpl");
        userServiceImpl.getUser();
//        User user = (User) context.getBean("User");
//        System.out.println(user);
    }
}


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="User" class="com.chenxb.pojo.User"/>

    <bean id="MysqLImpl" class="com.chenxb.dao.UserDaoMysqLImpl"/>
    <bean id="OracleImpl" class="com.chenxb.dao.UserDaoOracleImpl"/>

    <bean id="UserServiceImpl" class="com.chenxb.service.UserServiceImpl">
        <!--ref:引用spring容器中创建好的对象-->
        <property name="userDao" ref="OracleImpl"></property>
    </bean>
</beans>

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。