java反射

一、反射的概述
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象.

反射就是把java类中的各种成分映射成一个个的Java对象
例如:一个类有:成员变量、方法、构造方法、包等等信息,利用反射技术可以对一个类进行解剖,把个个组成部分映射成一个个对象。
     (其实:一个类中这些成员方法、构造方法、在加入类中都有一个类来描述)
如图是类的正常加载过程:反射的原理在与class对象。

java反射_第1张图片

 常用的类文件

java反射_第2张图片

反射的作用

类的加载器可以获得类中的东西:属性,构造方法,功能方法。即动态创建对象 动态操作属性 动态调用方法 

反射的入口-----------Class类

java反射_第3张图片

 

IOC和DI
IOC (依赖注入):一个类的功能需要依赖另一个类的配合,同时需要赋上一个具体的对象,则这种关系是依赖注入

DI(控制反转):以前依赖的对象自己直接new,现在不需要new,框架会自动注入,创建对象的权利转移给了框架

Spring框架负责所有对象的创建、管理和依赖注入,所有对象储存的容器叫做IOC容器


代码演示

package com.q.dao;
 
public interface BookDao {
 
    public void study();
 
}
 
package com.q.dao.impl;
 
import com.q.dao.BookDao;
 
public class BookDaoImpl implements BookDao {
    @Override
    public void study() {
 
    }
}

service层

package com.q.service.impl;
 
import com.q.dao.BookDao;
import com.q.service.BookService;
 
public class BookServiceImpl implements BookService {
 
    private BookDao bookDao;
    @Override
    public void save() {
        System.out.println("BookServiceImpl---------save");
        bookDao.study();
    }
}
  
package com.q.service;
 
public interface BookService {
    void save();
}

servlet层

package com.q.servlet;
 
import com.q.service.BookService;
import com.q.service.impl.BookServiceImpl;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
public class BookServlet {
 
    BookService bookService;
 
    @Test
    public void add(){
        System.out.println("bookService---------");
        ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("Spring.xml");
        bookService= (BookService) context.getBean("bookService");
        bookService.save();
    }
}

配置文件



 
    
    

你可能感兴趣的:(java,开发语言)