`
talentnba
  • 浏览: 91104 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring注入机制核心原理

阅读更多

其实spring是基于java的反射机制,现在举个示例看一下:

比如有个User类


public class User {
   String userName;
   String password;
/**
* @return the userName
*/
public String getUserName() {
   return userName;
}
/**
* @param userName the userName to set
*/
public void setUserName(String userName) {
   this.userName = userName;
}
/**
* @return the password
*/
public String getPassword() {
   return password;
}
/**
* @param password the password to set
*/
public void setPassword(String password) {
   this.password = password;
}
/*
* 打印用户信息
*/
public void printInfo(){
   System.out.println("userName:"+userName+",password:"+password);

}
}

然后我们再写一个类对其进行反射

import java.lang.reflect.Method;


public class Reflect {
public static void main(String[] args) {
   try{
    //根据类名(spring中是从applicationContext.xml中读取的)获得其类,注意这时还不是实例,只是个类
    Class<?> objClass=Class.forName("User");
    /*
    * 由类获取setter方法(spring中是从applicationContext.xml中读取的)
    * 第一个参数据是方法名,第二个是方法的参数(这里这用的是String类),可以是数组表示多个参数
    */
    Method setNameMethod=objClass.getMethod("setUserName", String.class);
    Method setPasswordMethod=objClass.getMethod("setPassword", String.class);
    //有的方法是private,设置方法的访问属性为可访问
    setNameMethod.setAccessible(true);
    setPasswordMethod.setAccessible(true);
    //实例化对象
    Object obj=objClass.newInstance();
    //调用方法进行注入
    setNameMethod.invoke(obj, new String("shirui"));
    setPasswordMethod.invoke(obj, new String("0000"));
    //此时完成注入,我们进行测一下
    User user=(User)obj;//spring中是ctx.getBean("user");
    user.printInfo();
    /*
    * 到此完成spring底层的反射机制
    */
   }catch(Exception e){
    e.printStackTrace();
   }
}
}

分享到:
评论

相关推荐

    深入解析Spring IoC源码:核心机制与实践应用

    本文深入探讨了Spring框架中IoC容器的源码机制,涵盖了容器的初始化、Bean工厂的实例化、Bean定义的读取及Spring Bean的生命周期管理。通过精细的分析,本文揭示了AnnotationConfigApplicationContext的实例化过程,...

    手写IOC项目,学习理解Spring IOC原理

    我们都知道,Spring框架的IOC是基于Java的反射机制实现,实现IOC,必须掌握反射的实践方法。Java反射机制是在运行状态中,对于...资源内容包括Java反射机制的实践,使用反射机制实现IOC(包括依赖注入和对象创建)。

    Spring-Reference_zh_CN(Spring中文参考手册)

    6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1. @Configurable object的单元测试 6.8.1.2. 多application context情况下的处理 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来...

    spring学习笔记(有代码有注解解释)

    内容概要:学习Spring的一些学习笔记,主要学习Spring 框架两大核心机制(IoC、AOP) 笔记大纲:阅读笔记可以学习了解一下内容 如何使用 IoC ;配置文件;IoC 底层原理;通过运行时类获取 bean;通过有参构造创建 ...

    Spring 2.0 开发参考手册

    6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. ...

    Spring.3.x企业应用开发实战(完整版).part2

    经过历时一年的重大调整改版而成的,本书延续了上一版本追求深度,注重原理,不停留在技术表面的写作风格,力求使读者在熟练使用Spring的各项功能的同时,还能透彻理解Spring的内部实现,真正做到知其然知其所以然。...

    Spring中文帮助文档

    6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...

    spring chm文档

    6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. ...

    Spring API

    6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...

    20万字必备java面试八股文宝典-多线程.数据库.Spring.SpringBoot.Linux.分布式.设计模式.面试指导

    Spring框架的核心概念、IoC(控制反转)和DI(依赖注入)原理、AOP(面向切面编程)等内容。覆盖了Spring Boot和Spring Cloud。 设计模式部分详细介绍了常用的设计模式及其在Java开发中的应用场景。 适合各阶段的...

    Spring面试题

    spring以动态灵活的方式来管理对象 , 注入的两种方式,设置注入和构造注入。 设置注入的优点:直观,自然 构造注入的优点:可以在构造器中决定依赖关系的顺序。 什么是AOP? 面向切面编程(AOP)完善spring的...

    Spring3.x企业应用开发实战(完整版) part1

    经过历时一年的重大调整改版而成的,本书延续了上一版本追求深度,注重原理,不停留在技术表面的写作风格,力求使读者在熟练使用Spring的各项功能的同时,还能透彻理解Spring的内部实现,真正做到知其然知其所以然。...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part3

    8.4.1 Spring 的事务机制 297 8.4.2 声名式事务 298 8.4.3 注解事务行为 299 8.4.4 类级别使用@Transactional 300 8.4.5 Spring Data JPA 的事务支持 300 8.4.6 Spring Boot 的事务支持 302 8.4.7 实战 303 8.5 数据...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part2

    8.4.1 Spring 的事务机制 297 8.4.2 声名式事务 298 8.4.3 注解事务行为 299 8.4.4 类级别使用@Transactional 300 8.4.5 Spring Data JPA 的事务支持 300 8.4.6 Spring Boot 的事务支持 302 8.4.7 实战 303 8.5 数据...

    SSH框架详解

    Hibernate工作原理、Hibernate的核心组件、Persistent Object、Hibernate的运行过程、Hibernate缓存的作用、Hibernate缓存分类、Hibernate优点、 Hibernate缺点、spring原理 、AOP(Aspect-Oriented Programming): ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part1

    8.4.1 Spring 的事务机制 297 8.4.2 声名式事务 298 8.4.3 注解事务行为 299 8.4.4 类级别使用@Transactional 300 8.4.5 Spring Data JPA 的事务支持 300 8.4.6 Spring Boot 的事务支持 302 8.4.7 实战 303 8.5 数据...

    Java的动态代理机制详解

    另一个是AOP,对于IoC,依赖注入不用多说了,而对于Spring的核心AOP来说,我们不但要知道怎么通过AOP来满足的我们的功能,我们更需要学习的是其底层是怎么样的一个原理,而AOP的原理是java的动态代理机制,所以本篇...

    蚂蚁云客服机器人面试答案.docx

    总而言之,在传统的对象创建方式中,通常由调用者来创建被调用者的实例,而在Spring中创建被调用者的工作由Spring来完成,然后注入调用者,即所谓的依赖注入or控制反转。 注入方式有两种:依赖注入和设置注入; IoC...

    达内java培训目录

    透彻理解Servlet核心原理;熟练掌握Servlet API;透彻理解JSP引擎工作原理;透彻理解标记库原理;熟悉常见的Java Web设计模式;为后续的Java Web开发打下坚实的理论基础。 Ajax Ajax基础、XHR对象、Ajax设计模式...

    Java Web程序设计教程

    11.4理解spring的核心——ioc 234 11.4.1控制反转 234 11.4.2依赖注入的3种方式 236 11.5beanfactory与applicationcontext 238 11.5.1认识beanfactory 238 11.5.2使用applicationcontext 238 11.6项目实战——...

Global site tag (gtag.js) - Google Analytics