这章开始学习SSH中最后的一个框架spring。Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。
首先就来学习一下IOC,它的好处就是降低了耦合,主要是通过bean之间的依赖关系尽可能地抓换为关联关系。
那么来基于maven项目来配置一个spring吧。
首先可以下载一个spring的插件:可在eclipse->Help->Eclipse Marketplace中搜索spring,然后找到spring tools进行下载即可,其它下载方式就不过多介绍了。
第一步:maven项目中的pom.xml中导入spring的依赖:spring-context,我以4.3.10版本为例
- <!-- spring-context 依赖 -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- <version>4.3.10.RELEASE</version>
- </dependency>
第二步:在src/main/resources文件夹下建立一个xml,取名为applicationContext.xml。在里面加上spring表头文件,如下
- <?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:aop="http://www.springframework.org/schema/aop"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
- </beans>
- 标签的解释:
- xmlns=XML Name space
- xmlns: 关于初始化bean的格式文件地址
- xmlns:xsi: 辅助初始化bean
- xsi:context: 关于spring上下文,包括加载资源文件
- xmlns:tx 事务标签的约束
- xmlns:aop aop(面向切面)标签的约束
- xsi:schemaLocation: 用于声明了目标名称空间的模式文档
第三步:新建一个人的类,给上name,age属性,封装构造,tostring即可。
第四步:开始配置一个bean,来实现IOC。在applicationContext.xml,配置如下:
- <bean id="person" class="com.entity.Person">
- </bean>
- //id为这个bean的名称自己定义就好,class为要配置类的全限定路径 //当然也可以使用name属性来代替id属性,name属性可以使用特殊符号来定义名称
第五步:再建立一个类,用main方法或者用junit的@Test来进行测试,测试代码如下
- // 延时加载(懒加载) 返回的对象只有一个 单列模式
- // 加载文件
- BeanFactory factory = new XmlBeanFactory(new
- ClassPathResource("applicationContext.xml"));
- 获取bean对象
- Person p = (Person) factory.getBean("person");
- System.out.println(p);
- // 及时加载 一个bean能够创建多个对象
- ApplicationContext aContext = new ClassPathXmlApplicationContext("applicationContext.xml");
- // 获取bean对象
- Person p = (Person) aContext.getBean("person");
- System.out.println(p);
这样一个简单的bean就配置完了。
我们可以在bean后面加上一个属性scope以及init-method属性。
scope属性值:
singleton(默认值)
在每个Spring Ioc容器中一个bean定义对应一个对象实例(单例模式)
prototype
一个bean定义对应多个对象实例.
request
在一次HTTP请求中,一个bean定义对应一个实例;即每次HTTP请求将会有各自的bean实例,它们依据某个bean定义创建而成。该作用域仅在基于web的Spring ApplicationContext情形下有效.
session
在一个HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。
global session
在一个全局的HTTP Session中,一个bean定义对应一个实例。典型情况下,仅在使用portlet context的时候有效。该作用域仅在基于web的Spring ApplicationContext情形下有效.
init-method属性的意思是这个bean初始化的时候调用哪个方法,属性值为bean对应这个类中的方法名即可。
接下来看下注入方式:
首先bean标签里面添加property标签,name对应属性名称,value对应属性值
1.比如给这个对象的属性设置默认值
- <bean id="person" class="com.entity.Person">
- <!--属性设置默认值 -->
- <property name="name" value="哈哈"></property>
- <property name="age" value="11"></property>
- </bean>
2.注入一个集合(set,list),以list为例
在persion类中加上一个lsit<string>的属性,封装
注入:
- <bean id="person" class="com.entity.Person">
- //ls为list<string>的变量名
- <property name="ls">
- <list>
- <value>谷歌</value>
- <value>呵呵</value>
- <value>嘻嘻</value>
- </list>
- </property>
- </bean>
3.构造注入
- //构造注入时,实体类中需存在相应的构造方法
- <bean id="person" class="com.entity.Person">
- <constructor-arg name="name" value="1"></constructor-arg>
- <constructor-arg name="age" value="18"></constructor-arg>
- </bean>
4.注入对象
新建实体类card,给上cid,cname两个属性,封装构造。
在applicationContext.xml中增加一个bean
- <bean id="card" class="com.entity.Card" > </bean>
card类中加上persion对象属性,封装。
然后在card的bean中注入
- <bean id="card" class="com.entity.Card" >
- //name 对象变量名
- <property name="person">
- //ref对应属性类在bean的标签ID
- <ref bean="person" />
- //idref元素的功能与<value>类似,只是idref多了验证的功能
- <!-- <idref bean="person" /> -->
- </property>
- </bean>
测试我这里就没试了。除了上面这几种注入,还可以百度看看静态工厂的方法注入以及实例工厂的方法注入。
本章结束!
来源: http://www.cnblogs.com/lzx2509254166/p/7817987.html