初学Spring中关于Spring的依赖注入

JAVA中的三大框架:Spring,Hibernate,STRUCTS

首先先来总结性的讲一下关于java的三大框架

Spring:一、SpringSpring是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的Inversion of Control容器。然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。 Spring提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。Spring的数据访问架构还集成了Hibernate和其他O/R mapping解决方案。Spring还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如JTA或者JDBC事务提供一个一致的编程模型。Spring提供了一个用标准Java语言编写的AOP框架,它给POJOs提供了声明式的事务管理和其他企业事务--如果你需要--还能实现你自己的aspects。这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务。Spring还提供了可以和IoC容器集成的强大而灵活的MVC Web框架。

二、STRUCTSStruts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。

三、HibernateHibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。映射很简单呀,就是页面的映射呀,多做点练习就会了,JAVA三大框架用来做WEN应用。

struts主要负责表示层的显示 spring利用它的IOC和AOP来处理控制业务(负责对数据库的操作) hibernate主要是数据的持久化到数据库 在用jsp的servlet做网页开发的时候有个web.xml的映射文件,里面有个mapping的标签就是用来做文件映射的。 当你在浏览器上输入URL地址的时候,文件就会根据你写的名称对应到一个java文件,根据java文件里编写的内容显示在浏览器上,就是一个网页,所以网页名字是随便写的,随便起的名字,不管你起的是.php .jsp .do还是其他的什么都对应这个java文件,这个java文件里的代码进行什么操作就干什么,显示一句话还是连接数据库还是跳转到其他页面等等,这个java文件把数据进行封装起到安全和便于管理的作用。其实这个java文件编译过来是.class的一个字节码文件,没有那么一个类似html嵌入标签和代码的网页文件。他与jsp文件区别就是jsp把代码嵌入到html标签中。 还有servlet或者struts中html表单的action中的提交名称对应一个java文件,struts一般是.do的,都和上面一样是映射。

二:关于Spring的作用域

1,singleton:单例,就是在整个Spring容器中,她仅有一个实例

2,prototype:Spring容器每接到一个请求,就会实例化一个对象

3,request:表明这个对象实例只在该请求之内,请求结束,该对象生命周期结束

4,session:一个会话期间生效。

三:关于测试

1,单元测试

2,业务测试

3,功能测试

4,UAT测试

5,生产环境测试

6,压力测试

四:关于Spring的简单例子

1,首先:将spring.jar,和commons-logging.jar包导入到webroot的WEB-INF下面的lib中;

2,创建一个webProject,将其命名为Test.在这里面我们需要创建一个接口Animal,一个实现接口的类AnimalImpl,一个管理类ManagerAnimal,一个测试类:Testa

具体代码如下

package Test;
/**
 * 定义一个接口Animal
 * @author Administrator
 *
 */
public interface Animal {
 //他有两个方法
public void name();
public void sex();

}

public class AnimalImpl implements Animal{


public void name() {
// TODO Auto-generated method stub
System.out.println("这是一只狮子");
}


public void sex() {
// TODO Auto-generated method stub
System.out.println("这只狮子是公狮");
}


}

package Test;
/**
 * 该类是用来管理动物
 * @author Administrator
 *
 */
public class ManagerAnimal {
//定义一个Animal对象
private Animal animal;
//获取get,set方法


public Animal getAnimal() {
return animal;
}


public void setAnimal(Animal animal) {
this.animal = animal;
}
//调用animal中name 方法
public void name(){
this.animal.name();
}
}

这时我们需要配备一下XML

具体方法为:在Test类的src下点击右键,选择file,命名为test.xml

在test.xml中我们应该配备的是:代码如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<!-- 在这行之前的都是固定格式,之后的是通过接口,相当于是类的实例化-->
       <bean id="animal" class="Test.AnimalImpl" scope="singleton"></bean>
       <bean id="manageranimal" class="Test.ManagerAnimal" scope="singleton">
      <property name="animal" ref="animal"></property>
        </bean>
       </beans>

//这是我们的测试类

package Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Testa {
 //实例化工厂
public static void main(String[] args) {
BeanFactory bf=new ClassPathXmlApplicationContext("test.xml");
ManagerAnimal manageranimal=(ManagerAnimal) bf.getBean("manageranimal");
manageranimal.name();
}
}

测试结果为:这是一只狮子

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值