zoukankan      html  css  js  c++  java
  • 在eclipse中配置一个简单的spring入门项目

      spring是一个很优秀的基于Java的轻量级开源框架,为了解决企业级应用的复杂性而创建的,spring不仅可用于服务器端开发,从简单性、可测试性和松耦合性的角度,任何java应用程序都可以利用这个思路进行开发,Spring的核心就是控制反转(IoC)和面向切面(AOP),总的来说,Spring是一个分层的Java轻量级框架

      所谓控制反转就是利用某种技术实现低耦合,对象之间相互的依赖关系是通过被动的方式传递进来,而不是对象主动进行另外对象的使用和查找,就是说控制权交给了容器,在初始化的时候,容器将实例化好的对象不用请求就主动传递过来,开发过程中不用进行任何的实例化对象就可以使用对象的方法,使用起来也感觉更加的轻松,所有的对象在spring中都是一个bean,spring提供了一种完善的javabean的依赖管理,实际上就是常说的依赖注入,是通过依赖注入的方式实现了控制反转的操作

      面向切面就是通过分离应用程序的业务逻辑和系统级服务,进行高内聚性的开发,应用对象只完成自己该完成的业务逻辑操作,其他的完全不必考虑,例如系统日志或其他事务等系统服务级操作对象完全不必关心,这样模块化更加清晰,更加适用于逻辑复杂的业务系统

      刚接触spring时会出现很多不好理解的概念,下面从一个最简单的例子开始,进入spring的学习,让spring更加的形象

      首先去spring官网下载spring framework框架,官网地址就是spring.io,一个非常简洁的页面

      

      然后点击导航栏的PROJECTS,看到一些比较大块的项目,单击SPRING FRAMEWORK

      

      然后就进入了spring framework的首页,网址是http://projects.spring.io/spring-framework/,向下拉右面有一些介绍文档点击超链接就可以,或者点击下面的"the modules section fo the reference documentation"超链接查看文档

      

      然后,就看到了很有名的一张图片就是spring framework框架的架构原理图

      

      通过这张图可以清楚的看出spring的大体构成,继续下拉页面,点击超链接:http://repo.spring.io/release/org/springframework/spring/

      

      这个就是最后的下载地址了,里面有所有的历史版本,自己可以根据需要选择下载,

      

      我这里下载的是最新的spring framework 4.2.4完整版本:spring-framework-4.2.4.RELEASE-dist.zip,也就是第一个,下载之后解压出来即可

      

      解压好之后,打开下面的libs目录,这里面就是spring framework所有的jar包了,我们打开eclipse建立一个项目,普通项目或者web项目都可以

      然后,我们复制必要的jar包,放到项目的某一个指定目录下或者web项目的lib目录下,需要的jar包如下图:

      

      这些就是项目所必须的jar包,需要扩展功能可以根据实际需要导入,复制之后如果是web项目会自动导入到项目,如果是普通项目则需要Build Path导入一下就可以使用了,其中junit-4.1.0.jar不是必须的,这只是单元测试所需要的一个jar包;commons-logging-1.2.jar项目中是没有的,它是Apache的日志管理工具,spring为了所有的java应用程序进行统一的日志接口管理,所以需要下载commons-logging.jar这个包,下载地址是:http://commons.apache.org/proper/commons-logging/index.html,进入后点击Download下载就行,然后和spring的包一起导入

      包都导入完毕了,接下来实现一个很简单的功能,我们建立一个接口,实现的就是输出一句话,代码如下:

    1 package net.zengzhiying.spring;
    2 
    3 public interface IHelloMessage {
    4     public String sayHello();
    5 }

      有两个类分别实现这个接口,分别返回中文的"大家好!"和英文的"HelloWorld!",代码如下:

     1 package net.zengzhiying.spring;
     2 
     3 public class HelloChina implements IHelloMessage {
     4 
     5     @Override
     6     public String sayHello() {
     7         return "大家好!";
     8     }
     9 
    10 }
     1 package net.zengzhiying.spring;
     2 
     3 public class HelloWorld implements IHelloMessage {
     4 
     5     @Override
     6     public String sayHello() {
     7         return "HelloWorld!";
     8     }
     9 
    10 }

      按照一般的使用,我们会分别实例化对象调用里面的方法使用,或者利用多态的概念通过接口来统一实例化对象使用里面的方法,其实有了spring就不用了,我们现在建立一个实体的类,用来放置接口实例化出的对象,

     1 package net.zengzhiying.spring;
     2 
     3 public class Person {
     4     private IHelloMessage helloMessage;
     5 
     6     public Person() {
     7         
     8     }
     9     
    10     //带参构造器注入
    11     public Person(IHelloMessage helloMessage) {
    12         this.helloMessage = helloMessage;
    13     }
    14     
    15     public IHelloMessage getHelloMessage() {
    16         return helloMessage;
    17     }
    18 
    19     public void setHelloMessage(IHelloMessage helloMessage) {
    20         this.helloMessage = helloMessage;
    21     }
    22     
    23     public String sayHello() {
    24         return this.helloMessage.sayHello();
    25     }
    26     
    27 }

      这个类就是一个Bean,一般的规范就是属性私有,并且设置get/set方法,分别有无参的和带参的构造方法,方便使用构造器进行对象的注入,这些类编写完了,然后我们在项目根目录下编写一个配置文件helloMessage.xml,就是这个核心的配置文件,交代了spring应该怎么样对容器中的对象进行管理,所以说这个xml配置文档是spring的最重要的部分之一,我们配置代码如下:

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
     3     "http://www.springframework.org/dtd/spring-beans.dtd">
     4 <beans>
     5 
     6 <bean id="helloWorld" class="net.zengzhiying.spring.HelloWorld"></bean>
     7 
     8 <bean id="helloChina" class="net.zengzhiying.spring.HelloChina"></bean>
     9 
    10 <bean id="person" class="net.zengzhiying.spring.Person">
    11     <!-- 配置依赖关系  控制反转  get/set方法注入 -->
    12     <!-- <property name="helloMessage" ref="helloWorld"></property> -->
    13     
    14     <!-- 构造器注入 -->
    15     <constructor-arg ref="helloWorld" />
    16 </bean>
    17 
    18 </beans>

      除了通用的头部声明外,所有的配置代码都写到<beans>里面,<bean>就是我们需要控制反转的所有类,然后后面需要向Person中进行对象的注入,可以用过get/set方法进行注入,也可以通过构造方法进行注入,name就是注入的属性名,ref就是需要将哪个类的实例化对象注入进去,这样就完成了简单的配置,也不难理解

      接下来我们配置主类,用来执行相应的方法,代码如下:

     1 package net.zengzhiying.spring;
     2 
     3 import org.springframework.beans.factory.BeanFactory;
     4 import org.springframework.beans.factory.xml.XmlBeanFactory;
     5 import org.springframework.core.io.FileSystemResource;
     6 import org.springframework.core.io.Resource;
     7 
     8 public class Main {
     9 
    10     public static void main(String[] args) {
    11         //引入配置文件
    12         Resource r = new FileSystemResource("helloMessage.xml");
    13         //加载配置文件
    14         BeanFactory f = new XmlBeanFactory(r);
    15         //获取Person实例
    16         Person person = (Person) f.getBean("person");
    17         String s = person.sayHello();
    18         System.out.println(s);
    19     }
    20 
    21 }

      现在只需要引入并加载配置文件,调出bean对象,然后就可以任意使用所有的类中的方法了,可以通过注入不同的类实现不同的操作,结果如下:

      

      同样的,现在我们也可以通过注入HelloChina类来输出大家好!实现起来也比较简单

      以上就是一个简单的spring初学小例子,体现了依赖注入的方式和控制反转的思想,spring让复杂应用的开发变得清晰简单了

      

  • 相关阅读:
    Android Studio使用笔记
    Android Material Design之在RecyclerView中嵌套CardView实现
    RR 和RC 幻读问题
    mysql rr和rc区别
    7.2 Database Backup Methods 数据备份方法:
    7.1 Backup and Recovery Types 备份和恢复类型
    Chapter 7 Backup and Recovery 备份和恢复:
    mysqldump 一些参数体验
    (?m) 可以让.去匹配换行
    perl 正则前导字符
  • 原文地址:https://www.cnblogs.com/freeweb/p/5100131.html
Copyright © 2011-2022 走看看