<一>Spring基础之Bean在XML中的配置

工作已经有三年了,一直有在用Spring,但是一直没有整理过细节,从现在开始整理一下spring的基础知识。

一:环境准备

从零开始,先创建个maven项目,打开IDEA,选择File->NewProject->Maven

选择Create from archetype,勾选maven-archetype-quickstart


然后修改pom.xml

<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>${spring.version}</version>
    </dependency>
  </dependencies>
在新建一个资源文件resources和java同级:在File->ProjectStructure->Module设置。

目录结构如下


环境搭建完毕。

二:xml中bean的配置

2.1Set注入

Spring的注入分三种:set注入,构造注入,接口注入。其中接口注入侵略性太强,不做讲解。
创建BasicBean
public class BasicBean {
    private String bean;
    private Integer num;
   //构造方法 get set
}
在资源文件目录下创建spring.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">
    <!--set注入-->
    <bean class="com.cch.demo.bean.BasicBean" name="basicBean">
        <property name="bean" value="testBean"/>
        <property name="num" value="1"/>
    </bean>

</beans>
创建一个测试类Main
public class Main {
    private ApplicationContext ac;

    @Before
    public void testBefore(){
        ac = new ClassPathXmlApplicationContext(new String[]{"classpath:spring.xml"});
    }
    @Test
    public void testBasic(){
        BasicBean basicBean = ac.getBean("basicBean",BasicBean.class);
        System.out.println("bean:"+basicBean.getBean()+" num:"+basicBean.getNum());
        basicBean.setNum(5);
        BasicBean basicBean2 = (BasicBean)ac.getBean("basicBean");
        System.out.println("bean:"+basicBean2.getBean()+" num:"+basicBean2.getNum());
    }

}
执行结果如下:
bean:testBean num:1
bean:testBean num:5
说明spring成功管理了我们的BasicBean。

接下来代码都是基于以上环境继续开发。

2.2构造注入

spring.xml新增
<!--构造器注入-->
    <bean class="com.cch.demo.bean.ListBean">
        <constructor-arg name="list">
            <list>
                <value>"zhangsan"</value>
                <value>"lisi"</value>
            </list>
        </constructor-arg>
    </bean>

新建类ListBean
public class ListBean {
    public List<String> list;
}
get set 构造方法请自行实现。
 @Test
    public void testList(){
        ListBean listBean = ac.getBean(ListBean.class);
        System.out.println(listBean.getList());
    }
测试结果如下:
["zhangsan", "lisi"]

2.3map set的使用

spring.xml新增
 <bean class="com.cch.demo.bean.MapBean">
        <property name="map">
            <map>
                <entry key="k1" value="v1" />
                <entry key="k2" value="v2" />
            </map>
        </property>
    </bean>

    <bean class="com.cch.demo.bean.SetBean">
        <property name="set">
            <set>
                <value>1</value>
                <value>"22"</value>
            </set>
        </property>
    </bean>
新增类MapBean Se't'Bean
public class MapBean {
    private Map<String,String> map;
}
public calsss SetBean{
 private Set set;
}
测试类新增
  @Test
    public void testMap(){
        MapBean mapBean = ac.getBean(MapBean.class);
        System.out.println(mapBean.getMap());
    }
    @Test
    public void testSet(){
        SetBean setBean =ac.getBean(SetBean.class);
        System.out.println(setBean.getSet());
    }


2.4xml中同一个类配置多个

配置同一个类多次 需要以id或name区分
 <bean class="com.cch.demo.bean.BasicBean" id="testBean">
        <property name="bean" value="testBean"/>
        <property name="num" value="1"/>
    </bean>

    <bean class="com.cch.demo.bean.BasicBean" id="test2Bean" name="test2Bean">
        <constructor-arg index="0" value="lala" />
        <constructor-arg index="1" value="3" />
    </bean>


2.5使用自动注入

创建BigBean BeInjectedBean
@Component
public class BeInjectedBean {
    private int num;
}
public BeInjectedBean(){
 this.num=3;
}

@Componet是spirng的注解,声明这个bean为一个组件。
使用了@Componet是隐式的,所以需要增加一下Spring的扫描路径。

    <context:component-scan base-package="com.cch.demo.bean" />
    <bean class="com.cch.demo.bean.BigBean"></bean>
    @Test
    public void testBigBean(){
        BigBean bigBean = ac.getBean(BigBean.class);
        System.out.println("num:"+bigBean.getBeInjectedBean().getNum());
    }

结果如下:

num:3

2.6在xml引用已经配置的bean

  <bean class="com.cch.demo.bean.OtherBean">
        <property name="basicBean" ref="testBean"></property>
    </bean>
public class OtherBean {
    public BasicBean basicBean;
}

    @Test
    public void testOther(){
        OtherBean otherBean = ac.getBean(OtherBean.class);
        System.out.println("bean:"+otherBean.getBasicBean().getBean()+" num:"+otherBean.getBasicBean().getNum());
    }

结果如下:
bean:testBean num:1
相信大家已经会简单的使用spring的bean配置了。
源码地址如下:
https://github.com/13127898836/spring-demo/tree/master/springdemo02









  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值