当前位置: 首页 > news >正文

邢台网站建设优化自己做短视频网站

邢台网站建设优化,自己做短视频网站,制作企业网站首页,国家企业年报系统官网我们知道,在Spring中,一个Bean可以理解为一个对象,但是二者之间肯定是有区别的,比如一个Bean可以实例化成很多个对象、Bean中可以带有某些描述信息。 学习Bean,能更好地使用Bean。 1、Spring两个核心概念的由来【可忽…

        我们知道,在Spring中,一个Bean可以理解为一个对象,但是二者之间肯定是有区别的,比如一个Bean可以实例化成很多个对象、Bean中可以带有某些描述信息。

        学习Bean,能更好地使用Bean。

1、Spring两个核心概念的由来【可忽略】

        Spring最关键的功能就是实现IOC依赖翻转,其依赖翻转的实现靠的是设计模式“工厂模式”,所以,Spring中有一个核心概念,叫做工厂“Factory”。【当然,我们一般使用BeanFactory接口】

        只有工厂,那么每次客户端(如果我们把Spring的客户---即程序员,看成客户端)调用某个对象,就可能要重新new一个对象(或者靠反射实例化一个对象)。

        new对象没有关系,最核心的是我们是在XML文件(或者Java配置类,又或者注解开发)里配置bean属性的,如果每次new对象,都要解析XML文件,那么性能会很低。

        那么,为什么不用一个仓库,把所有的对象实例化后,存储起来呢?

        【保持疑问:懒加载lazy--load属性,能支持每次使用bean时,才创建,好像和new对象没区别?(目标:找出它们的区别)】

        既然想要一个仓库,就得有一个统一的“商品”,否则,我们没法用一种统一的方法,存储某个对象(比如自定义的3个类Student、Teacher、Course,3个类是有区别的)

        由于Java里,所有的类都指向Object,所以用Object当“商品”是个好主意。

        不过,Object想强转为某个类型(比如student),也得事先知道这是student。

        在Spring的早期版本,程序员使用BeanFactory创建Bean时,调用getBean方法,都要强转,这没什么问题。

        然而,随着Spring的发展,我们逐渐摒弃这种做法,更多采用@Autowired注解自动实例化,这时候,强转就是一个问题了。

        先分析这个问题。第一,强转的关键在于,我们事先不知道这个bean,是不是Student类,所以需要交给程序员手动处理。第二,@Autowired注解的关键是,我们要找到@Autowired对象和某个类的联系。【比如你在Student类中,用@Autowired注解了下面的语句“private Teacher tea”,那么要找到Student和Teacher的关系】(当然,这通过反射好像也能解决,不过也许性能问题吧。)

        所以,我们需要一个类,至少有2个属性。第一,标注这个bean指向哪个类;第二,标注这个bean,可能需要哪个类(当然,现在要求指向另一个bean,不过也说得通,如果Spring能够直接拿到另一个非bean的对象,那么其侵入性就太强了)

        当然,这不是BeanDefinition诞生的原因,我们也能发现,早期Spring版本是需要手动强转的。

        不过,举了这个例子,我们能发现,如果用Object类作为“商品”,其拓展性就很低。

        如果用某个类X,继承Object呢?可行,不过问题在于,X会继承Object的所有属性和方法,某种情况下我们不希望这么做。(比如性能损耗、或者希望内外部沟通的方法唯一)

        所以,干脆一不做二不休,采用一个接口BeanDefinition,作为“商品”。

        可能你会问了:Object是所有类和接口的基类,所有类和接口,都直接或间接指向Object,那定义这个接口,不也是一样?

        其实,Java这样定义是为了统一的类结构,在实际使用时,会发现接口无法调用Object的方法,所以其实并没有继承。【这也符合Java中,接口不能继承自具体类的原则】

        (当然了,为了保持拓展性,Spring还定义了一个接口AttributeAccessor,使接口BeanDefinition继承AttributeAccessor)【Spring很多其它概念,都继承了这个接口】

        此时,问题解决了一些,另一个在Java语法层面的问题是:

        接口不能定义变量,任何属性在接口里,都必须是public、static和final的。

        所以,我们需要在BeanDefinition接口的某个实现类中,定义这些属性。

        实现了BeanDefinition接口的抽象类AbstractBeanDefinition中,就定义了这些属性。

        其它实现BeanDefinition接口的类,直接或间接都继承了AbstractBeanDefinition类。【可以说这是最重要的类之一】

2、Spring中,BeanDefinition定义的信息

        其实在应用层面,我们很少使用BeanDefinition,一般都是配置后@Autowired。

        当然,了解BeanDefinition的一些属性,对开发也大有帮助。

第一,BeanDefinition的类特征信息定义

        类信息定义,主要功能是,外部拿bean和内部找到类。

        1.类名:bean的唯一名称,依靠此名称,从工厂Factory找到bean【getBean方法的字符串就是它的名字】

        2.指向的类:bean对应的类,一般是从工程目录java往下的相对路径。

第二,BeanDefinition的内部属性信息定义

        主要功能是,实现内部的一些功能。

        1.Scope作用域(我个人觉得应该叫类型):原生Spring有2种,单例singleton和原型prototype。(在其它情况可能会多出几种)【这定义了,当外部使用bean时,我们Spring是每次重新new一个bean(原型),还是永远返回同一个bean(单例)】

        2.primary主要的:

                假设有1接口叫FX,他有n个实现类。

                其中,类X的配置中,设置了这个属性。

                那么,如果Spring内部某个类AAA有成员变量FX,使用@Autowired时,默认实例化类X。

        3.依赖信息:比如该bean需要依赖哪些类。

        4.懒加载lazy-load:如果定义了这个,Spring不会一开始就实例化bean。

第三,行为信息定义

        主要功能是,定义外部使用bean时,可以做的操作。

        1.初始化方法:在bean实例化后,会调用该方法。

        2.销毁方法:在bean销毁前,会调用该方法。

此外,BeanDefinition还有一些其它属性,所以我用得不多,在此不说明。

         我是蚊子码农,如有补充或者疑问,欢迎在评论区留言。个人的知识体系可能没有那么完善,希望各位多多指正,谢谢大家。

http://www.yayakq.cn/news/262104/

相关文章:

  • 北京城乡建设学校网站网站 如何做后台维护
  • 向国外支付网站开发费ps怎么logo设计制作
  • 学网站建设 去哪里网站维护需要哪些知识
  • 宣传不网站成都全案设计公司
  • 深圳哪里可以做网站怎么建个公司网站
  • wordpress建公司网站哈尔滨做网站公司哪家好
  • 网站建设新模式永修建设局网站
  • 河北省建设厅网站官网同步wordpress文章
  • 保定网站建设模板联系方式中国建设造价工程协会网站
  • 怎么用网站开发者工具更换网页贺卡制作网页
  • 别人用我的身份信息建设网站私人承接软件开发定制
  • 网站报名照片怎么做室内设计培训班学费一般多少
  • 关于手表网站建设策划书打开微信公众号
  • 做网站的职责seo云优化是什么意思
  • 网站建设要什么软件海东市住房和城乡建设局网站
  • 集团企业网站建设方案市场调研公司成功案例
  • 网站请人做要多少钱跨境电商数据分析网站
  • 网站开发项目需求分析说明书flash中国官网
  • 网站建设经费的请示企业建设网站的主要目的
  • 网站信息维护网站建设小说毕业设计
  • 青岛做网站排名wordpress幻灯片教程视频教程
  • 做wps的网站赚钱wordpress首页调用文章多张图片
  • 查询网站备案进度查询湖南人文科技学院图书馆
  • 网站开发平台 运行平台网站建设成品
  • 网站进度条建筑模板施工图片
  • 企业营销网站建设公司排名做网站时怎么透明化
  • 定兴县住房和城乡建设局网站什么是高清视频会议终端
  • 网站泛解析免费开源的个人网站系统
  • wordpress 主题开心版淘宝seo优化排名
  • 北京建设局投诉网站杭州seo网站排名