Spring2.5的基本配置

学习Spring之前,先了解Spring到底是什么?
spring是一个开源的控制反转(Inversion of Control ,简称IOC)和面向切面的(AOP)的容器框架,他主要的目的是简化企业开发。
(一)怎么理解控制反转?
看下面一个例子:

Public class PersonServiceBean{
    private PersonDao personDao = new PersonDaoBean();

    public void save(Persion person){
        personDao.save(person);
    }
}

上面的代码中personDaoBean是由应用的内部创建和维护的,所谓控制反转就是应用本身不负责以来对象的创建和维护,依赖对象的创建和维护是由外部容器负责创建和维护的,控制权有内部转移到外部容器,控制权的转移就是所谓的反转。

(二)依赖注入
何为依赖注入:在运行期间,由外部容器动态的将依赖对象注入到组件中
以下面的例子为例:

Public class PersonServiceBean{
    private PersonDao personDao; 
    // 通过构造器的参数,让容器把创建好的对象注入到PersonServiceBean,也可以使用setter方式。
    public PersonServiceBean(PersonDao personDao){
        this.personDao = personDao;
    }
    public void save(Persion person){
        personDao.save(person);
    }
}

(三)为何使用spring
1.降低组件之间的耦合度,实现软件各个层次的解耦(以前servic会调用dao层,耦合度高,修改后的是面相接口编程,通过接口注入对象,要求实现类一定要实现这个接口)
2.可以让容器提供各种服务,如:事务管理,消息服务,JMS,持久化。使用容器管理事务,开发人员不需要手工控制事务,也不需要处理复杂的事务传播。(传统编程一直需要手工开启事务session.beginTransaction()/conn.setAutoCommit(false)和session.getTransaction.commit()/conn.commit())

// 如果不使用spring,在一个事物中执行两个方法,需要把conn拿到外面传入conn才能实现,需要修改代码和参数,这样不方便编程,采用spring可以很好的解决,使用声明事务属性@Transaction(propagation=Propagation.Required)
void mian1(){
    c1.save();
    c2.update();
}

// 需要修改代码
void mian2(){
    Connection conn = ...
    c1.save(conn );
    c2.update(conn );
    ...
}

public Class  C1{
    public void save(){
    Connection conn .... // 一个事务
        ...
    }
}
public Class  C2{
    public void update(){
    Connection conn .... // 一个事务
        ...
    }
}

3.容器提供单例模式支持
4.容器提供AOP拦截服务,可以实现权限拦截,运行期监控
5.容器还提供很多辅类,方便开发
6.对主流框架集成的支持,如struts,hibernate,jap等
(四) 配置Spring
配置也分必要配置和可添加配置进行配置,先下载Spring2.5开发包:
1. 必要配置包:
spring-framework-2.5.6\dist\spring.jar
spring-framework-2.5.6\lib\jakarta-commons\commons-logging.jar
如果用到面相切面(AOP)编程需要
spring-framework-2.5.6\lib\aspectj\aspectjrt.jar
spring-framework-2.5.6\lib\cglib\cglib-nodep-2.1.jar
如果需要使用JSR-250的注解需要
spring-framework-2.5.6\lib\j2ee\common-annotations.jar
2. 建立一个beans.xml文件,文件参考来自参考手册,在docs下面可以查到
这里写图片描述

<?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-2.5.xsd
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">

</beans>
  1. 实例化Spring容器
    ①在类路径下面实例化容器
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext(new String[]{“beans.xml”}); // 一般会有多个bean
    ②在文件路径下实例化容器
    ApplicationContext applicationContext = new FileSystemXmlApplicationContext(“C:\beans.xml”);
    第一步:写一个业务bean接口和实现
public interface PersonService {
    public void save(String name);
}

public class PersonServiceBean implements PersonService {
        public void save(String name) {
            System.out.println("save: "+name);
        }
}

第二步:配置bean.xml文件,在bean.xml文件中添加

<!-- 建议第一个字母是小写,class为全限定名交给spring管理的bean类 -->
<bean id="personService" class="com.heying.service.impl.PersonServiceBean"/>

第三步:初始化容器按照名字找到需要管理的bean

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");
PersonService personService = (PersonService) applicationContext.getBean("personService");
personService.save("123");

单元测试结果会发现成功后说明基本框架结构成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值