Spring框架基础示例

来源:互联网 发布:土地数据可以从哪里找 编辑:程序博客网 时间:2024/05/31 19:18

作者

李权朗

术语准备

控制反转:
Inversion on Control , 控制反转 IOC
对象的创建交给外部容器完成,这个就做控制反转.

依赖注入,  dependency injection     处理对象的依赖关系区别:

控制反转, 解决对象创建的问题 【对象创建交给别人】
依赖注入,
在创建完对象后, 对象的关系的处理就是依赖注入 【通过set方法依赖注入】

开发前准备

开发工具:eclipse
Spring版本:spring3.2
Spring核心工具包:commons-logging-1.1.3.jar、spring-beans-3.2.5.RELEASE.jar、spring-context-3.2.5.RELEASE.jar、spring-core-3.2.5.RELEASE.jar、spring-expression-3.2.5.RELEASE.jar,总共5个

开发步骤

一.运行eclipse,新建动态web项目,项目名字为Spring(ps:生成普通java项目也可以,不过web项目将工具包引入项目方便一点)
这里写图片描述
二.将上述5个开发包导入WebContent—>WEB-INF—>lib包
这里写图片描述
三.新建三个类,分别代表DAO层,业务逻辑层,和控制层

package cn.lang.testClass;/** * dao类,模拟操作数据库 * @author 程序猿 * */public class UserDao {    public void save(){        System.out.println("保存数据");    }}
package cn.lang.testClass;/** * 业务逻辑层 * @author 程序猿 * */public class UserService {    private UserDao userDao;    public UserDao getUserDao() {        return userDao;    }    public void setUserDao(UserDao userDao) {        this.userDao = userDao;    }    public UserService(){    }    public void save(){        userDao.save();    }}
package cn.lang.testClass;/** * 控制层 * @author 程序猿 * */public class UserAction {    private UserService service;    public UserService getService() {        return service;    }    public void setService(UserService service) {        this.service = service;    }    public void execute(){        service.save();    }}

四.在src下新建配置文件(bean.xml),用作IOC容器,代码如下:

<beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:p="http://www.springframework.org/schema/p"    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">    <bean id="userDao" class="cn.lang.testClass.UserDao"></bean>    <bean id="userService" class="cn.lang.testClass.UserService">        <!--property的name属性要与类中属性名字相同-->        <property name="userDao" ref="userDao"></property>    </bean>    <bean id="userAction" class="cn.lang.testClass.UserAction">        <property name="service" ref="userService"></property>    </bean></beans>   

五.编写测试类

package cn.lang.testClass;import org.springframework.beans.factory.xml.XmlBeanFactory;import org.springframework.core.io.ClassPathResource;import org.springframework.core.io.Resource;/** * 测试类 * @author 程序猿 * */@SuppressWarnings("deprecation")public class Test {    public static void main(String[] args){        Resource resource = new ClassPathResource("bean.xml");        XmlBeanFactory fa = new XmlBeanFactory(resource);        UserAction userAction = (UserAction) fa.getBean("userAction");        userAction.execute();    }}/*Console输出:三月 20, 2016 1:16:20 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions信息: Loading XML bean definitions from class path resource [bean.xml]保存数据*/

以上是通过xml配置实体类,接下来演示通过注解配置bean类
一.先引入context名称空间
xmlns:context=”http://www.springframework.org/schema/context”
二.开启注解扫描

具体代码如下:

<beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:p="http://www.springframework.org/schema/p"    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">    <!-- 开始注解扫描,base-package指定要扫描包的包名 -->    <context:component-scan base-package="cn.lang.testClass"></context:component-scan></beans>   

下面分别是使用注解的bean类

package cn.lang.testClass;import org.springframework.stereotype.Component;/** * dao类,模拟操作数据库 * @author 程序猿 * */@Component(value="userDao")public class UserDao {    public void save(){        System.out.println("保存数据");    }}
package cn.lang.testClass;import javax.annotation.Resource;import org.springframework.stereotype.Component;/** * 业务逻辑层 * @author 程序猿 * */@Component(value="userService")public class UserService {    @Resource(name="userDao")    private UserDao userDao;    public UserDao getUserDao() {        return userDao;    }    public void setUserDao(UserDao userDao) {        this.userDao = userDao;    }    public UserService(){    }    public void save(){        userDao.save();    }}``

package cn.lang.testClass;

import javax.annotation.Resource;

import org.springframework.stereotype.Component;

/**
* 控制层
* @author 程序猿
*
*/
@Component(value = “userAction”)
public class UserAction {
@Resource(name = “userService”)
private UserService service;

public UserService getService() {    return service;}public void setService(UserService service) {    this.service = service;}public void execute(){    service.save();}

}

“`
总结:使用Spring主要有三个步骤,引入开发包、创建实体类和配置配置文件(xml文件)

0 0
原创粉丝点击