<一>Spring基础之Bean在XML中的配置
2018-01-20 14:25
579 查看
工作已经有三年了,一直有在用Spring,但是一直没有整理过细节,从现在开始整理一下spring的基础知识。
选择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设置。
目录结构如下
环境搭建完毕。
创建BasicBean
bean:testBean num:1
bean:testBean num:5
说明spring成功管理了我们的BasicBean。
接下来代码都是基于以上环境继续开发。
新建类ListBean
get set 构造方法请自行实现。
["zhangsan", "lisi"]
配置同一个类多次 需要以id或name区分
@Componet是spirng的注解,声明这个bean为一个组件。
使用了@Componet是隐式的,所以需要增加一下Spring的扫描路径。
结果如下:
num:3
结果如下:
bean:testBean num:1
相信大家已经会简单的使用spring的bean配置了。
源码地址如下: https://github.com/13127898836/spring-demo/tree/master/springdemo02
一:环境准备
从零开始,先创建个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基础_在XML中进行显式配置<三>
- SPRING IN ACTION 第4版笔记-第二章WIRING BEANS-008-在XML配置文件中引入JAVA配置文件 <import> 、<bean>
- Spring基础_在JavaConfig中引用xml配置<四>
- Spring注解之xml配置中的<context:component-scan />和<context:annotation-config/>
- XML基础知识-->Spring配置
- hibernate 注解配置<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/X
- Spring配置文件中使用ref local与ref bean的区别. 在ApplicationResources.properties文件中,使用<ref bean>与<ref local>方法如下
- Spring基础_自动装配bean<一>
- Spring基础_在XML配置中引用JavaConfig<五>
- XML基础知识-->Spring配置
- Spring配置文件中使用ref local与ref bean的区别. 在ApplicationResources.properties文件中,使用<ref bean>与<ref local>方法如下
- spring读取数据库的配置信息(url、username、password)时的<bean>PropertyPlaceholderConfigurer的用法
- SpringMVC(1):基础配置文件web.xml 和 <servlet-name>-servlet.xml / springmvc.xml
- java 框架基础知识(4)----XML基础知识-->Spring配置
- spring注解时AOP失效,XML配置<bean>正常
- 丢弃重口味的xml配置--spring4用groovy配置bean(转)
- Spring中使用xml配置bean
- 关于Spring中的<context:annotation-config/>配置(开启注解)
- 配置xml避免Spring加载两次bean
- Spring配置文件详解一:<:<context:annotation-config/>与<context:component-scan base-package="com.xx