spring 创建bean的三种方式一 :xml配置

目前spring 创建bean的方式一共有3种类,分别是:xml配置,java配置和注解
此篇是xml配置
在resource下新建beans.xml
beans.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"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
         http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
<!--    xmlns:c="http://www.springframework.org/schema/c"-->
<!--    xmlns:p="http://www.springframework.org/schema/p"-->
    <!-- 注入方式,构造器注入-->
      <!--有参bean 方式下标注入-->
    <bean id ="people1" class = "com.kang.People">
        <constructor-arg index="0" value="chenkang1"></constructor-arg>
    </bean>
    <!--有参bean 方式类型注入,不建议使用,会重复-->
    <bean id = "people2" class ="com.kang.People">
        <constructor-arg type="String" value="chengkang2"></constructor-arg>
    </bean>
    <!--有参bean 方式名称,最常使用-->
    <bean id = "people3" class="com.kang.People">
        <constructor-arg name="name" value="chenakng3"></constructor-arg>
    </bean>


   <!--set方法注入-->
    <!--无参bean,id 是唯一标识符,class是类的地址  name是别名,可以取多个-->
    <bean id="animal" class="com.kang.Animal" name="animalAlias1 animalAlisa2">
        <property name="name" value="chenkang"></property>
        <property name="people" ref="people1"></property>
        <property name="ageList">
            <list>
                <value>1</value>
                <value>1</value>
            </list>
        </property>
        <property name="map">
            <map>
                <entry key="身份证" value="12345634"></entry>
            </map>
        </property>
        <property name="set">
            <set>
                <value>1</value>
                <value>2</value>
            </set>
        </property>
    </bean>




<!--  &lt;!&ndash; c,p 命名空间注入,c其实就是构造器注入,p是set方法属性注入&ndash;&gt;-->
<!--    <bean id="peopleCP" name="com.kang.People" >-->
<!--    </bean>-->


  <!--别名,就是给bean取另外一个名字,2个都能用,但是bean中的name也可以取别名,且name更高级-->
    <alias name="people" alias="peopleAlias"></alias>

 <!--设计模式,单例模式和原型模式,默认为单例模式,单例模式就全局唯一对象,原型模式会创建多个对象-->
    <bean id ="peopleScope" class = "com.kang.People" scope="singleton">
    </bean>
    <!-- 开启注解需要导入  xmlns:context="http://www.springframework.org/schema/context  http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd   和注解支持"-->
    <context:annotation-config/>
    <!-- 扫码指定包下的注解-->
    <context:component-scan base-package="com.kang"></context:component-scan>
    </beans>

实体类

package com.kang;

import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;
import java.util.Map;
import java.util.Set;

public class Animal {
    private String name;
    private List<String> ageList;
    private Map<String,String> map;
    private Set<String> set;
    @Autowired
    private People people;
    public Animal() {}

    public Animal(String name, List<String> ageList, Map<String, String> map, Set<String> set, People people) {
        this.name = name;
        this.ageList = ageList;
        this.map = map;
        this.set = set;
        this.people = people;
    }

    @Override
    public String toString() {
        return "Animal{" +
                "name='" + name + '\'' +
                ", ageList=" + ageList +
                ", map=" + map +
                ", set=" + set +
                ", people=" + people +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<String> getAgeList() {
        return ageList;
    }

    public void setAgeList(List<String> ageList) {
        this.ageList = ageList;
    }

    public Map<String, String> getMap() {
        return map;
    }

    public void setMap(Map<String, String> map) {
        this.map = map;
    }

    public Set<String> getSet() {
        return set;
    }

    public void setSet(Set<String> set) {
        this.set = set;
    }

    public People getPeople() {
        return people;
    }

    public void setPeople(People people) {
        this.people = people;
    }
}
package com.kang;

public class People {
    private String name;
    public People() {

    }

    public People(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "People{" +
                "name='" + name + '\'' +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

测试类:

package com.kang;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {

    public static void main(String[] args) {
        //获取spring的上下文对象
        ApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("beans.xml");
        //从上下文中获得bean,依赖注入的本质是se方法注入的
        Animal people1 = (Animal) classPathXmlApplicationContext.getBean("animalAlisa2");
        System.out.printf(people1.toString());


    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值