韶光淑气_Spring_2.0 Bean创建+命名_2020年4月8日20:28:10

Posted agoodjavaboy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了韶光淑气_Spring_2.0 Bean创建+命名_2020年4月8日20:28:10相关的知识,希望对你有一定的参考价值。

Bean命名

  • 上文采用ID对bean进行命名,此标识位于一个容器中为唯一的。

  • 不仅可使用ID命名bean标签,还可使用Name命名,同一容器中一个bean可存在多个name名,名称之间用分号或空格隔开。

    <bean name="TestHello;TestHello2" class="bean.Hello">
        <property name="name" value="Father"></property>
    </bean>
  • bean中命名要以小写字母开头,且用驼峰命名法命名。

  • 可使用alias标签对bean标签做别名设置,其中name属性表示原bean名称,alias中可书写多个别名,别名之间用逗号隔开:

    <alias name="TestHello" alias="hello,hello2,hello3"></alias>

实例化方式

构造函数

  • Spring中类的实例化不必继承或实现任何接口与类,只需简单的类信息即可,即最基础默认的无参构造函数。

静态工厂方法

  • 采用静态工厂方法需在类中书写一静态方法,此方法必须静态!方法返回值即为当前类对象,且类中要求存在无参构造函数。

    在方法中,要返回实际的内容,即类中创建的静态的私有的当前类的对象之引用:

    private static Hello hello = new Hello();
    ?
    public static Hello createHello(){
        return hello;
    }
  • 在applicationContext.xml文件中,在bean标签中添加factory-method属性,即工厂方法,并指定方法名,亦为类中静态方法之名:

    <bean name="TestHello;TestHello2" class="bean.Hello" factory-method="createHello"></bean>

实例工厂方法

  • 实例工厂方法亦会于容器中取出当前bean之工厂方法创建bean,不可添加class属性!在factory-bean属性中传入当前容器中此实例的其他bean的标识,和工厂方法名,即可根据传入的实例创建对象:

    <bean id="TestHello" class="bean.Hello"></bean>
    ?
    <bean id="HelloTest" factory-bean="TestHello" factory-method="createHello"></bean>
    public class Hello{
        private static Hello hello = new Hello();
        public Hello createHello(){
            return hello;
        }
    }
  • 可以这样理解:此时的bean已不是常规使用所用的bean,已经成为一个工厂,可批量创建所处类的实例。并且一个工厂实例可批量创建多个bean:

    <bean id="TestHello" class="bean.Hello"></bean>
    ?
    <bean id="HelloTest1" factory-bean="TestHello" factory-method="createHello"></bean>
    ?
    <bean id="HelloTest2" factory-bean="TestHello" factory-method="createHello"></bean>
    ?
    <bean id="HelloTest3" factory-bean="TestHello" factory-method="createHello"></bean>
  • 并且一个类中可存在多个工厂方法用于获得实例:

    public class Hello{
        private static Hello hello = new Hello();
        private static Hello hell2 = new Hello();
        
        public Hello getHello1(){
            return hello;
        }
        public Hello getHello2(){
            return hell2;
        }
    }

以上是关于韶光淑气_Spring_2.0 Bean创建+命名_2020年4月8日20:28:10的主要内容,如果未能解决你的问题,请参考以下文章

[Spring5]IOC容器_Bean管理XML方式_创建对象_set注入属性and有参构造注入属性

Spring的学习____5.Bean的作用域

[Spring5]IOC容器_Bean管理注解方式_创建对象

[Spring5]IOC容器_Bean管理_工厂Bean

[Spring5]IOC容器_Bean管理_bean的作用域和bean的生命周期

Spring_管理bean的生命周期