首页 > 其他分享 >早上提问

早上提问

时间:2023-03-10 20:11:07浏览次数:38  
标签:反射 对象 Spring 编译 早上 属性 提问 IOC

早上提问总结
1.Spring底层用到过哪些设计模式?
(1)工厂模式:BeanFactory 就是简单工厂模式的体现,用来创建对象的实例;
(2)单例模式:Bean 默认为单例模式。
(3)代理模式:Spring 的 AOP 功能用到了 JDK 的动态代理和 CGLIB 字节码生成技术;
(4)模板方法:用来解决代码重复的问题。比如. RestTemplate, JmsTemplate, JpaTemplate。
(5)观察者模式:定义对象键一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都
会得到通知被制动更新,如 Spring 中 listener 的实现.


2.解释beanFactory?
BeanFactory 是什么
BeanFactory 是用于Spring, Bean 容器的根接口,它是 IOC 的基本容器,
负责管理和加载 Bean,它为其他具体的IOC容器提供了最基本的规范,
BeanFactory是实现IOC容器的核心接口,它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。


3.IOC/DI
DI 介绍 
Dependency Injection 依赖注入.需要有IOC 的环境,Spring 创建这个类的过程中,Spring 将类的依赖的属性设置进去.


IOC与DI的的区别: 
IOC:  控制反转,将类的对象的创建交给Spring类管理创建.                                 
DI:    依赖注入,将类里面的属性在创建类的过程中给属性赋值. 
spring 的依赖注入常见的有两种方式:
构造注入和 setter 注入;
(1)、所谓构造注入,就是读取<bean>标签的<constract-arg index="" value="">, 通过 class 字节码文件对象,获取构造参数;
(2)、setter 注入,就是通过反射的<property name="" value="">;
DI和IOC的关系: DI不能单独存在,DI需要在IOC的基础上来完成.
这样做得好处:做到了单一职责,并且提高了复用性,解耦。
4.java的反射有几种获取字节码方式?
三种 
Class.forName("全限定类名")
类名.class
对象.getClass


5.为什么使用反射机制
1).增加程序的灵活性,避免将程序写死到代码里(动态获取属性和方法)。
2)代码简洁 提高复用率
3.)对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法


反射的缺点
1)性能问题:使用反射基本上是一种解释操作,用于字段和方法接入时要远慢于直接代码(编写便利但是执行速度慢)
使用反射会模糊程序内部逻辑
2)程序人员希望在源代码中看到程序的逻辑,反射等绕过了源代码的技术(不利于维护)
3)使用反射技术要求程序必须在一个没有安全限制的环境中运行
4)内部暴露:由于反射允许代码执行一些在正常情况下不被允许的操作(比如访问私有的属性和方法)


6.反射都能做什么
1)、获取类型的相关信息
2)、动态调用方法
3)、动态构造对象
4)、从程序集中获得类型
          
7.可以获取私有属性和方法嘛?
反射可以获取类的详细信息,要获取私有属性的值,只需将对应属性的ReflectionProperty实例设置为可访问再取值即可。


8.反射创建对象的几种方式
通过Class.newInstance()直接创建对象。
通过Class实例获取到Constructor(构造器),通过构造器创建对象。
9.反射的方式如何创建一个对象
创建对象 通过反射来生成对象需要先使用 Class 对象获取指定的 Constructor 对象(构造器),再调用 Constructor 对象的 newInstance () 方法来创建该 Class 对象对应类的实例。


10.反射创建对象和直接new的区别?
一、**********************************************************************


a1:new属于静态编译


b1:反射属于动态编译,意思就说只有到运行时才会去获得该对象的实例
二、**********************************************************************


a2:静态编译类似于在编译的时候把你所有的模块都编译进exe里去,编译后就存在。


b2:动态编译则相反,编译的时候那些些模块都没有编译进去,而是在运行的时候,用到哪个模块就会利用反射去取模块
三、**********************************************************************


a3:反射对象是直到程序运行期间才知道类的名字的实例,这时才获取对象的成员,并设置属性


b3:new是给类直接在内存中创建一个实例,并且可以直接初始化等。不需要类的全路径。

标签:反射,对象,Spring,编译,早上,属性,提问,IOC
From: https://www.cnblogs.com/XieLingYu/p/17119033.html

相关文章

  • 周日太累,影响到周一早上上班?
    周日晚上辅导孩子们学习,之前答应了一起帮另外两个孩子一起复习。答应了就要做哈。但是发现吼叫孩子真是耗费精力。回头想想也就那么点东西啊。。还有就是为啥觉得做饭收......
  • Android病毒分析基础(二)—ChatGPT提问技巧
    今天我们来用最近比较火的“ChatGPT”学习一下Android病毒分析基础,看看和我们之前学的有什么不同,又能学习到什么新的东西,同时了解一下“ChatGPT”提问的一些精髓。和我们......
  • ChatGPT 出错时自动刷新页面重新提问
    有时候,提问时出现“Anerroroccurred.Ifthisissuepersistspleasecontactusthroughourhelpcenterathelp.openai.com.”之类的错误。一般刷新页面重新提问就......
  • 一位读者逻辑清晰的提问
    哥,想请教你一些问题,麻烦哥你有时间的时候帮我解答一下,非常感谢:1.驱动岗位少?面试准备驱动会不会有点偏?2.感觉自己之前看的太细了,有些东西记不住。你的pdf+正点原子+项目......
  • 对ChatGPT的几个提问,当码农小帮手可行
      ChatGPT能说会到,还能写代码修Bug,今天就验证它的IT相关知识能力,容器的使用、代码理解编写的能力等,目前看ChatGPT的水平还是很高,虽然之前通过搜索引擎也能够获取得到,但是......
  • 2023-01-20 早上被叫醒的是老家“情报中心”的开会声
    2023-01-20周五今天早上被叫醒的不是梦想,是老家经典的“情报中心”开会声,是早早出来售卖各种用来“念心”的肉丸子的叫卖声,我猜明天叫醒我的就应该是潮汕地区特别经典的......
  • 如何提问 :提问的智慧
    介绍:在黑客的世界里,您对技术问题得到的答案类型取决于您提出问题的方式和得出答案的难度。本指南将教您如何以更有可能获得满意答案的方式提问。既然开放源代码的使用已......
  • How To Ask Questions The Smart Way 提问的智慧
    Copyright(C)2001byEricS.Raymond中文版Copyleft2001byD.H.Grand(nOBODY/Ginux)英文版:http://www.tuxedo.org/~esr/faqs/smart-questions.html感谢Eric的耐心指点......
  • 早上梦见去一家有战友的拉面馆买拉面
    后来我说加面加肉现在想起来这个梦之前的梦就是一个前老同事去卖自行车而他雇用的人特别多梦醒来之后我还想着拉面的味道但那个“战友”是真的丑啊从前天回到老家......
  • 把ChatGPT配置到微信群里,可以对AI提问了!
    作者:小傅哥博客:https://bugstack.cn沉淀、分享、成长,让自己和他人都能有所收获!......