zoukankan      html  css  js  c++  java
  • 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>

     

     

     

     

     

     

  • 相关阅读:
    BZOJ.1016.[JSOI2008]最小生成树计数(Matrix Tree定理 Kruskal)
    BZOJ.4031.[HEOI2015]小Z的房间(Matrix Tree定理 辗转相除)
    BZOJ.1014.[JSOI2008]火星人(Splay 二分 Hash)
    BZOJ.4903.[CTSC2017]吉夫特(Lucas DP)
    BZOJ.1011.[HNOI2008]遥远的行星(思路 枚举)
    BZOJ.1013.[JSOI2008]球形空间产生器(高斯消元)
    BZOJ.1007.[HNOI2008]水平可见直线(凸壳 单调栈)
    BZOJ.1003.[ZJOI2006]物流运输(DP 最短路Dijkstra)
    BZOJ.1001.[BeiJing2006]狼抓兔子(最小割ISAP)
    BZOJ.1085.[SCOI2005]骑士精神(迭代加深搜索)
  • 原文地址:https://www.cnblogs.com/lastingjava/p/9979952.html
Copyright © 2011-2022 走看看