Spring学习

来源:互联网 发布:百度域名劫持事件 编辑:程序博客网 时间:2024/06/08 01:49
    • IOC 控制反转——>程序不依赖具体实现,而是依赖于抽象接口–林信良

      • 例子

        • 实现文件读取,现在读取XML,以后不一定

          • 传统的实现
            - public class OldXmlReader { public void reader(){ System.out.println("读取XML");}}

            • 执行
              • OldXmlReader oxr = new OldXmlReader(); oxr.reader();
          • 通过set注入实现

            • 定义读取器规范
              • public interface Reader {public void Read();}
            • 其中一种实现
              • public class XmlReader implements Reader{@Override public void Read() {System.out.println("XML");}}
            • 另外一种实现
              • public class TxtReader implements Reader{@Override public void Read() {System.out.println("读取TXT");}}
            • service类
              • public class ReaderService {private Reader reader;public void setReader(Reader reader) {this.reader = reader;}public void read(){reader.Read();}}
              • 执行
                • ReaderService rs = new ReaderService();rs.setReader(new XmlReader());rs.read();
                  • 通过配置文件来实现注入
              • public class ReaderFactory {private Properties prop;private static ReaderFactory readerFactory;private ReaderService rs;private Reader read;ReaderFactory() throws Exception{InputStream in = ReaderFactory.class.getClassLoader().getResourceAsStream("properties/read.properties");prop = new Properties();//加载配置文件 prop.load(in);String readerService = prop.getProperty("ReaderService.java");String reader = prop.getProperty("Reader.java");//根据反射获取类的实例rs = (ReaderService) Class.forName(readerService).newInstance();read = (Reader) Class.forName(reader).newInstance();rs.setReader(read);}public static ReaderFactory getNewInstance() throws Exception{if(null == readerFactory ){readerFactory = new ReaderFactory();}return readerFactory;}public ReaderService getRs() {return rs;}public Reader getRead() {return read;}}
              • 具体的配置文件
              • ReaderService.java=com.want.spring.one.partOne.ReaderService Reader.java=com.want.spring.one.partOne.TxtReader
              • 执行
                • ReaderFactory.getNewInstance().getRs().read();
原创粉丝点击