Spring实战(2)-IOC

Bean:

在spring中,所有的java对象都会被spring核心容器管理。一切对象统称为Bean。


IoC:

控制翻转,在spring中就是依赖注入:指的就是容器负责创建对象和维护对象间的依赖关系,而不是通过对象本身负责自己的创建和解决自己的依赖。主要目的是为了解耦。通俗说就是我写的java类,在别的地方使用的时候需要实例化,注入等。而现在在spring中,这些实例化,注入到需要使用的地方这些工作全部由一个spring提供的容器(第三方)去负责。

Spring IoC 容器ApplicationContext)负责创建Bean,并通过容器将Bean注入到需要的地方去。实现的方式是通过XML、注解、java配置等方式来实现的。

既然容器可以知道我写的那个类是Bean,而且还的把这个Bean注入到需要的地方去。那么就涉及到了Bean的声明和Bean的注入。我需要告诉spring哪个是你要去声明的和哪个地方是你需要去注入的。

声明Bean的注解:

  • @Component 组件,没有明确的角色
  • @Serivice 在业务逻辑层使用
  • @Repository 在持久层使用
  • @Controller 在展现层使用

注入Bean的注解:(一般情况下通用)

  • @Autowired  :Spring提供的注解
  • @Resource   :JSR-250提供的注解

 


JAVA反射机制:

Spring可以做到这种依赖注入,凭借的就是java本身的反射机制。

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识。这项信息纪录了每个对象所属的类。虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类型信息的类是Class类。

也就是说,ClassLoader找到了需要调用的类时,就会加载它,然后根据.class文件内记载的类信息来产生一个与该类相联系的独一无二的Class对象。该Class对象记载了该类的字段,方法等等信息。以后jvm要产生该类的实例,就是根据内存中存在的该Class类所记载的信息来进行。

流程图:(转自https://blog.csdn.net/sinat_38259539/article/details/71799078

我们使用java提供的这个Class,注意首字母大写。以及它提供的一些方法就可以实现获取构造函数,方法等。

猜你喜欢

转载自blog.csdn.net/qq_42666483/article/details/83022232