Java - 什么是IOC,JAVA纯代码反射技术模拟IOC

本文转载自: https://user.qzone.qq.com/644556636/blog/1466713056


什么是IOC技术,对于很多初学者而言,或许认为IOC多么高大上。其实IOC不过如此,知道其实现原理,IOC无非砖头的数量。慢慢搬呗。

控制反转

控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心。 控制反转一般分为两种类型,依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)。依赖注入应用比较广泛。

这是百度对IOC的解释。然而。IOC真的很高大上么。

其实笔者之前并不知道IOC。不知道什么是IOC。不知道IOC就是笔者用烂了的东西。笔者曾经去面试,面试官问,什么是IOC,IOC的好处是什么,IOC有什么作用,为什么要用IOC。笔者懵逼了。什么是IOC。其实像这些问题也不好回答,就像什么是人,什么是技术,什么是JAVA。这类问题不需要回答。然而当笔者根据自己的思路去解释IOC的时候。面试官都不懂,说我的是错的。也许,大部分只适合照着书本写写背背。

IOC用来用去就那么几种方式,其实现原理很简单,预先实例化对象在容器池。用到的时候取出来。这样确保对象永远只会实例化一次。好像在业内又叫做神马单例模式,反正笔者也不懂。


在阳光满面的今天,笔者颜值爆表。通过纯代码来模拟一下IOC。

在代码解说前,先分享一下源码包:链接: http://pan.baidu.com/s/1gfGyQ0V 密码: 86ip

对源码做一个解说:

  • annotation包,用来存放注解。InitBean 初始化实例化的bean,类似@service; WriteBean注入对象使用,类似@Resource
  • bean包,用来存放参与依赖注入的bean。为了方便起见,本次测试仅扫描本包下的bean
  • container包,存放对象的容器池。spring使用的是application,本次测试使用的是map。
  • init包,用于对象注入操作。
  • model包,存放实体类。
  • test包,全局测试入口
  • util包

1、 首先新建InitBean 注解类,用于对类进行实例化

package annotation;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME) 
public @interface InitBean {
   

    String beanName() default "";
}

2、建立WriteBean 注解类,对字段进行注入赋值。

package annotation;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME) 
public @interface WriteBean {
   
    String beanName() default "";
}

3、创建User模型。创建UserService,使用InitBean进行标志

package model;

public class User {
   
    private String userName;
    private String
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值