Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > JavaWeb技术相关 >

SpringIOC解耦 PDF 下载


分享到:
时间:2020-07-22 14:20来源:http://www.java1234.com 作者:小锋  侵权举报
SpringIOC解耦 PDF 下载
失效链接处理
SpringIOC解耦 PDF 下载

本站整理下载:
 
相关截图:
 
主要内容:

Dao.java代码:
package com.heima;
 
public interface Dao {
    public abstract void method();
}
Services.java代码:
package com.heima;
 
public interface Services {
    void method();
}
实现类:
DaoImpl.java:
package com.heima.Impl;
 
import com.Factory.BeanFactory;
import com.heima.Dao;
import com.heima.Services;
 
public class DaoImpl implements Dao {
//     private Services services=new ServicesImpl();
    private Services services= (Services)BeanFactory.getBean("services");
    public void method(){
        services.method();
    }
}
ServicesImpl.java代码:
package com.heima.Impl;
 
import com.heima.Services;
 
public class ServicesImpl implements Services{
    public void method(){
        System.out.println("保存了账户云云");
    }
 
}
注解:Dao层的实现类在类体里面创建了一个ServicesImpl是实现类(private Services services= (Services)BeanFactory.getBean("services");
Dao层的method()方法里调用了ServicesImpl实现类里面的method()方法。
这个时候需要模拟一个web层调用Dao层的实现类达到输出语句的目的:
Client.java代码:
package com.heima.UI;
 
import com.Factory.BeanFactory;
import com.heima.Dao;
import com.heima.Impl.DaoImpl;
 
public class Client {
    public static void main(String[] args) {
//        Dao dao=new DaoImpl();
        Dao dao= (Dao)BeanFactory.getBean("dao");
        dao.method();
    }
}
注意看以上代码创建Dao接口,Services接口时都没有采用new方法创建实现类,而是采用了工厂模式。
工厂模式可以解决程序间的耦合:
但创建实现类对象时需要一个配置文件告诉程序创建什么对象,同时需要一个beanfactory.java去读取配置文件,并且创建一个实现类对象。Beanfactory名字随便取。
Beanfactory.java代码:
package com.Factory;
 
import java.io.InputStream;
import java.util.Properties;
 
public class BeanFactory {
    private static Properties prop;
    static {
        try {
            prop = new Properties();
            InputStream in = BeanFactory.class.getClassLoader().getResourceAsStream("bean.properties");
            prop.load(in);
        }catch (Exception e)
        {
            throw new ExceptionInInitializerError();
        }
    }
    public static Object getBean(String name){
        Object bean=null;
        try {
            String beanPath = prop.getProperty(name);
            bean = Class.forName(beanPath).newInstance();
        }catch (Exception e){
            e.printStackTrace();
        }
        return bean;
    }
 
}
配置文件bean.properties代码:
services=com.heima.Impl.ServicesImpl
dao=com.heima.Impl.DaoImpl
 
-----------------------------------------
上面的方法降低了耦合,但BeanFactory代码很繁琐,可以直接用Spring框架的IOC(控制反转)代替,如下:

 

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐