• Bean工厂ApplicationContext


    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> //前缀
    
    <bean id="helloWorld" class="com.tutorialspoint.HelloWorld"> 
        <property name="message" value="Hello World!"/> 
    </bean>

    1、创建一个xxx.XML文件,前缀必须带

    2、<bean></bean>标签代表POJO,id:类名,class:类的全名

    property:name和POJO中属性一一对应,有value:直接赋值 或者 ref:引用容器中已有的beans(id)

    3、获取ApplicationContext:

    ApplicationContext context = new ClassPathXmlApplicationContext(configLocation:"xxx.xml");

    Bean 与 Spring 容器的关系

     Bean的作用域:(<bean>标签中,通过scope="xxxxx"改变值

    1、singleton 是默认(缺省)的作用域,也就是说,当定义 Bean 时,如果没有指定作用域配置项,则 Bean 的作用域被默认为 singleton。

         Singleton是单例类型,就是在创建起容器时就同时自动创建了一个bean的对象,不管你是否使用,他都存在了,每次获取到的对象都是同一个对象

         适用于无状态对象(Stateless Bean):就是没有实例变量的对象,不能保存数据,是不变类,是线程安全的。bean一旦实例化就被加进会话池中,各个用户都可以共用。即使用户已经消亡,bean 的生命期也不一定结束,它可能依然存在于会话池中,供其他用户调用。由于没有特定的用户,那么也就不能保持某一用户的状态,所以叫无状态bean。

     

    2、Prototype是原型类型,它在我们创建容器的时候并没有实例化,而是当我们获取bean的时候才会去创建一个对象,而且我们每次获取到的对象都不是同一个对象

         适用于有状态对象(Stateful Bean):就是有实例变量的对象,可以保存数据,是非线程安全的。每个用户有自己特有的一个实例,在用户的生存期内,bean保持了用户的信息,即“有状态”;一旦用户灭亡(调用结束或实例结束),bean的生命期也告结束。即每个用户最初都会得到一个初始的bean。

     

    Bean 定义继承:

    1、子 bean 的定义继承父定义的配置数据。子定义可以根据需要重写一些值,或者添加其他值。

    2、Bean 定义的继承与 Java 类的继承无关,但是继承的概念是一样的。

    3、基于 XML 的配置元数据时,通过使用parent(父)属性,指定父 bean 作为该属性的值来表明子 bean 的定义。

    4、一个 Bean 定义模板时,你不应该指定class(类)的属性,而应该指定带 true 值的abstract(抽象)属性。

    5、父 bean 自身不能被实例化,因为它是不完整的,而且它也被明确地标记为抽象的。它仅仅作为一个纯粹的模板 bean 定义来使用的,充当子定义的父定义使用。

  • 相关阅读:
    C#进阶系列——WebApi 路由机制剖析:你准备好了吗?
    Socket长连接和短连接的区别
    C#socket通信时,怎样判断socket双方是否断开连接
    Redis常见面试题
    [C# 线程处理系列]专题三:线程池中的I/O线程
    结对编程第一次作业
    软件工程第三次作业
    软件工程第二次作业
    人生中的第一篇博客
    CPU 分类
  • 原文地址:https://www.cnblogs.com/mo-jian-ming/p/13251571.html
Copyright © 2020-2023  润新知