第四课:通过配置文件获取对象(Spring框架中的IOC和DI的底层就是基于这样的机制)

首先在D盘创建一个文件hero.txt,内容为:com.hero.Hero(此处必须是Hero的完整路径)

接下来是Hero类

package com.hero;

public class Hero {
    String name;
    int id;

    public Hero() {
        super();
        // TODO Auto-generated constructor stub
    }

    public Hero(String name, int id) {
        super();
        this.name = name;
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    static String copyright;

    static {
        System.out.println("初始化 copyright");
        copyright = "版权由Riot Games公司所有";
    }

    @Override
    public String toString() {
        return "Hero [name=" + name + ", id=" + id + "]";
    }

}

然后是Test类测试

package com.hero;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

public class TestReflection4 {
    public static void main(String[] args) throws InterruptedException {
        Hero h = getHero();
        System.out.println(h);
    }

    public static Hero getHero() {

        File f = new File("D:/hero.txt");

        try (FileReader fr = new FileReader(f)) {
            String className = null;
            char[] all = new char[(int) f.length()];  //把文件里的数据读到all这个char数组里面
            fr.read(all);  //String的构造方法,也可以用className=String.valueOf(all);
            className = new String(all);
            Class clazz=Class.forName(className);
            Constructor c= clazz.getConstructor();
            Hero h= (Hero) c.newInstance();
            h.setName("a");
            return h;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }

    }
}
时间: 2024-08-27 10:51:29

第四课:通过配置文件获取对象(Spring框架中的IOC和DI的底层就是基于这样的机制)的相关文章

Spring框架中的IOC和DI的区别

上次面试被问到IOC和DI的区别时,没怎么在意,昨天又被问到,感觉有点可惜.今晚总算抽点时间,查看了spring官方文档.发现,IoC更像是一种思想,DI是一种行为.为了降低程序的耦合度,利用spring将对象依赖的对象进行注入的过程中,发生了什么呢?发生了控制权的反转.而spring官方文档中,也是将Dependency Injection放在了IoC Container这一章的子节中. spring官方文档:http://docs.spring.io/spring/docs/3.2.13.R

spring.net中的IoC、DI和MVC

概述 spring.net是一个开源的业务层的框架,功能非常的强大,归结一下有3个功能:面向切面编程:IoC和DI:提供综合型的框架支持,本片博客主要说一下IoC和DI,和其提供的对MVC框架的支持. IoC和DI IoC,英文全称Inversion of Control,控制反转:DI,英文全称Dependency Injection,依赖注入.简而言之,IoC就是创建对象,DI就是创建对象的时候,进行初始化. IoC和DI就相当于我们通常写的抽象工厂+反射,只不过比抽象工厂的功能强大,但是其

3.Spring框架中的标签与配置文件分离

1.Spring框架中标签的配置 1. id属性和name属性的区别 * id -- Bean起个名字,在约束中采用ID的约束,唯一 * 取值要求:必须以字母开始,可以使用字母.数字.连字符.下划线.句话.冒号 id:不能出现特殊字符 * name -- Bean起个名字,没有采用ID的约束(基本不在使用) * 取值要求:name:出现特殊字符.如果<bean>没有id的话 , name可以当做id使用 * Spring框架在整合Struts1的框架的时候,Struts1的框架的访问路径是以/

javascript获取对象直接量中的属性和属性值

javascript获取对象直接量中的属性和属性值:所谓的对象直接量简单来说就是,由大括号包裹的键值对列表,例如: var antzone={ webName:"蚂蚁部落", address:"青岛市南区", age:2 } 下面介绍一下如何获取对象直接量中的属性和属性值,代码如下: var antzone={ webName:"蚂蚁部落", address:"青岛市南区", age:2 } for(var prop in a

Spring框架中2种生成代理对象的方法

Spring框架中2种生成代理对象的方法 Jdk Proxy基于接口生成代理对象,只能赋值给接口的引用(默认使用jdk). Spring进一步封装 CGLIB,基于实现类生成代理对象,既可以赋值给接口的引用,也可以赋值给实现类的引用 JDK提供的Proxy,和spring进一步封装的CGLIB.二者生成的代理没有任何区别,生成的都是代理对象.只是生产方式不同,前者是基于接口生成代理,后者基于实现类生成代理对象 如何切换spring框架中默认生成代理的方式 <aop:config proxy-ta

Spring框架学习之IOC(一)

Spring框架学习之IOC 先前粗浅地学过Spring框架,但当时忙于考试及后期实习未将其记录,于是趁着最近还有几天的空闲时间,将其稍微整理一下,以备后期查看. Spring相关知识 spring是J2EE应用程序框架,是轻量级的IoC和AOP的容器框架,主要是针对javaBean的生命周期进行管理的轻量级容器.可单独使用,通常也与其他框架整合使用,例如SSH.SSM. IOC:控制反转 控制权由对象本身转向容器:由容器根据配置文件去创建实例并创建各个实例之间的依赖关系.等同于DI依赖注入 A

用IDEA详解Spring中的IoC和DI(挺透彻的,点进来看看吧)

用IDEA详解Spring中的IoC和DI 一.Spring IoC的基本概念 控制反转(IoC)是一个比较抽象的概念,它主要用来消减计算机程序的耦合问题,是Spring框架的核心.依赖注入(DI)是IoC的另外一种说法,只是从不同的角度描述相同的概念.看完这两句,是不是不但没懂,反而更迷惑了,别急,往下看: IoC的背景 我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 如果我们打开机械式手表的后盖,就会看到与

再析在spring框架中解决多数据源的问题

在前面我写了<如何在spring框架中解决多数据源的问题>,通过设计模式中的Decorator模式在spring框架中解决多数据源的问题,得到了许多网友的关注.在与网友探讨该问题的过程中,我发现我的方案并不完善,它只解决了一部分问题. 总结多数据源的问题,其实它需要分为以下三种情况:各个数据源的数据结构不同.各个数据源的数据结构相同.各个数据源的数据结构部分相同又有部分不同.对于第二种情况,各个数据源的数据结构相同,我们使用一个sessionFactory,而在sessionFactory中通

【Spring】8、Spring框架中的单例Beans是线程安全的么

看到这样一个问题:spring框架中的单例Beans是线程安全的么? Spring框架并没有对单例bean进行任何多线程的封装处理.关于单例bean的线程安全和并发问题需要开发者自行去搞定.但实际上,大部分的Spring bean并没有可变的状态(比如Serview类和DAO类),所以在某种程度上说Spring的单例bean是线程安全的.如果你的bean有多种状态的话(比如 View Model 对象),就需要自行保证线程安全. 最浅显的解决办法就是将多态bean的作用域由"singleton&