• spring<bean>标签 IOC:控制反转


    使用Bean创建对象:

    在applicationContext.xml中

    <?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.xsd">
        <bean id="people" class="com.spring.pojo.People"/>
    </beans>

    测试:(读取applicationContext.xml时就已经创建类

    public class Test {
        public static void main(String[] args) {
            ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
            People people = applicationContext.getBean("people",People.class);
            System.out.println(people);
        }
    }

    有参构造:

        <bean id="people" class="com.spring.pojo.People">
            <constructor-arg name="id" index="0" value="1"></constructor-arg>
            <constructor-arg name="name" index="1" value="spring"></constructor-arg>
        </bean>

    使用工厂设计模式创建对象:

    1.静态工厂:(不需要new一个工厂对象)

    工厂类:

    public class PeopleFactory {
        public static People instancePeople() {
            return new People();
        }
    }

    配置bean:

    <!-- 静态工厂 -->
        <bean id="people3" class="com.spring.pojo.PeopleFactory" factory-method="instancePeople"></bean>

    1.实例工厂:(需要new一个工厂对象)

    工厂类:

    public class PeopleFactory {
        public People instancePeople() {
            return new People();
        }
    }

    配置bean:

    <!-- 实例工厂 -->
        <bean id="peopleFactory" class="com.spring.pojo.PeopleFactory"></bean>
        <bean id="people2" factory-bean="peopleFactory" factory-method="instancePeople"></bean>

     在配置文件中给Bean对象的属性赋值:

        <bean id="people1" class="com.spring.pojo.People">
            <property name="id">
                <value>123</value>
            </property>
            <property name="name">
                <value>springName</value>
            </property>
        </bean>

    等价写法:

        <bean id="people1" class="com.spring.pojo.People">
            <property name="id" value="123"></property>
            <property name="name" value="spring"></property>
        </bean>

    spring内部使用了类的无参构造器和setXxx方法

    <property>内各种标签示例:set,array,map,props(java.util.properties)....

    <property name="sets">
                <set> 
                    <value>1</value>
                    <value>2</value>
                    <value>3</value>
                </set>
            </property>
            <property name="strs">
                <array>
                    <value>1</value>
                    <value>2</value>
                    <value>3</value>
                </array>
            </property>
            <property name="map">
                <map>
                    <entry key="a" value="1"></entry>
                    <entry key="b" value="2"></entry>
                    <entry key="c" value="3"></entry>
                </map>
            </property>
            <property name="desk">
                <ref bean="desk" />
            </property>
            <property name="pros">
                <props>
                    <prop key="a">1</prop>
                </props>
            </property>

    DI ( 依赖注入,一个对象中包含另一个对象):在property中使用ref

    <property name="desk">
                <ref bean="desk" />
    </property>    
    
    
    -------------------------------------------------
    <bean id="desk" class="com.spring.pojo.Desk">
            <property name="id">
                <value>1</value>
            </property>
            <property name="name">
                <value>desk</value>
            </property>
    </bean>

     

     

     

     

     

     

  • 相关阅读:
    移动端web app开发备忘
    HDU 5391-Zball in Tina Town(数论)
    LeetCode:Invert Binary Tree
    Mongo集群之主从复制
    Cocos2d-x--iOS平台lua加密成luac资源方法和Jsc文件&lt;MAC平台开发试用--windows平台暂未研究&gt;
    优秀程序猿因何而优秀?
    Java Exception和Error的差别
    【Android开发】之Fragment与Acitvity通信
    Draw the RGB data from kinect C++ via opengl
    使用Opencv2遇到error C2061: 语法错误: 标识符dest
  • 原文地址:https://www.cnblogs.com/lastingjava/p/9979952.html
Copyright © 2020-2023  润新知