您的位置:首页 > 编程语言 > Java开发

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

2018-01-20 14:25 579 查看
工作已经有三年了,一直有在用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring
相关文章推荐