Spring部分基础知识(后续会修改和更新)

Spring框架结构图

  

1、      Spring AOP提供Spring框架基本功能,主要组件是BeanFactory,他提供工厂模式的实现。

2、      Spring上下文是一个配置文件,向Spring框架上下文信息。

3、      通过配置管理特性,Spring AOP模块直接将面向方面的编程功能集成到了Spring框架中。

4、      Spring DAO:JDBC DAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误信息。

5、      Spring ORM:Spring框架插入了若干个ORM框架,从而提供了ORM的对象关系工具。

6、      Spring Web模块:Web上下文模块建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文。

7、      Spring MVC框架:Spring的MVC框架是一个全功能的构建Web应用程序的MVC实现。

IoC的实现策略有两种

1、      依赖查找:

 

2、      依赖注入:

好处:

a)  查询依赖操作和应用代码分离。

b)  受控对象不会使用到容器的特定的API。

Java发射机制实现IoC容器

   主要提供了以下功能

1、      判断任意一个对象所属的类

2、      构造任意一个类的对象

3、      判断任意一个类所具有的成员变量和方法

4、      调用任意一个对象的方法

5、      生成动态代理

JDK中,主要有以下类来实现Java反射机制

1、      Class类:代表一个类

2、      Field类:代表成员变量

3、      Method类:代表类的方法

4、      Constructor类:代表类的构造方法

5、      Array类:提供了动态创建数组,以及访问数组元素的静态方法

 

实现具体代码如下:

import java.lang.reflect.Constructor;

import java.lang.reflect.Field;

import java.lang.reflect.Method;

 

public class MyClass {

    private String str1;

    private String Str2;

    public MyClass(String str1, String str2) {

        this.str1 = str1;

        this.Str2 = str2;

    }

   

    public String getStr1() {

        return str1;

    }

 

    public void setStr1(String str1) {

        this.str1 = str1;

    }

 

    public String getStr2() {

        return Str2;

    }

 

    public void setStr2(String str2) {

        Str2 = str2;

    }

   

    public String sayHello(String name){

        return "Hello"+name;

    }

 

    public static void main(String[] args){

        try {

//          String claz="MyClass";

//          Class cls=Class.forName(claz);

//          System.out.println(cls.toString());

            Class[] types=new Class[]{String.class,String.class}; //变量参数数组

            Constructor cons=MyClass.class.getConstructor(types);//根据参数获得构造参数

            Object[] objs=new Object[]{"a","b"};

            MyClass clazz=(MyClass) cons.newInstance(objs);//传入参数创建MyClass类的对象

           

            Class[] type2=new Class[]{String.class};

            Method method=MyClass.class.getMethod("sayHello", type2);//根据类的对象创建方法,第一个参数是方法名,第二个是参数类型

           

            Object[] strs=new Object[]{"World"};

            Object result=method.invoke(clazz, strs);//调用方法,第一个参数是类的实例,第二个是参数数组

            System.out.println(result.toString());

//          Field field=MyClass.class.getDeclaredField("str1");

//          field.set(clazz, "Hello");

           

//          System.out.println(field.get(clazz));

        } catch (Exception e) {

            // TODO: handle exception

        }

    }

}

依赖注入:

1、    接口注入

2、    构造注入

3、    设置注入(set()注入设置)

转载于:https://www.cnblogs.com/Shalove/archive/2013/01/04/2844388.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值