欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

spring之旅第一篇-初识spring

程序员文章站 2022-07-28 11:31:57
一、概述 只要用框架开发java,一定躲不过spring,Spring是一个轻量级的Java开源框架,存在的目的是用于构建轻量级的J2EE应用。Spring的核心是控制反转(IOC)和面向切面编程(AOP)。spring有如下特点: 轻量级:应用大小和应用开支,包括应用方式 DI/IoC:提供松耦合 ......

一、概述

只要用框架开发java,一定躲不过spring,spring是一个轻量级的java开源框架,存在的目的是用于构建轻量级的j2ee应用。spring的核心是控制反转(ioc)和面向切面编程(aop)。spring有如下特点:

  1. 轻量级:应用大小和应用开支,包括应用方式

  2. di/ioc:提供松耦合的一种实现技术

  3. aop:切面编程将业务逻辑从应用服务中分离

  4. 容器:包含并管理应用对象的生命周期和配置

  5. 框架:使用组件配置组合成复杂的应用,并提供很多基础功能

由于spring是一个容器型的框架,所以它不排斥其他框架,并且可以轻松的整合其他框架。

spring以一种非侵入式的方式来管理你的代码,spring提倡”最少侵入”,这也就意味着你可以适当的时候安装或卸载spring 。

二、模块

spring框架大约由20多个小模块组成,这些模块分为:核心容器,数据访问/集成,web,面向切面编程(aop),消息和测试等等,如下图所示

spring之旅第一篇-初识spring

下面逐一介绍这几大模块:

1.核心容器:核心容器包括spring-core, spring-beans,spring-context, spring-context-support, 和spring-express,其中spring-core和spring-beans模块提供框架的基础部分,包括控制反转和依赖注入。beanfactory是一个复杂的工厂模式的实现。上下文(spring-context)模块建立在core和bean模块的基础之上:它提供了一种框架风格来访问对象,类似于jndi注册表。context模块继承了bean模块的特点并增加了对国际化、事件传播、资源加载等的支持。applicationcontext接口是context模块的焦点。spring-context-support支持将第三方库集成到spring应用中,例如缓存,javamail、模板引擎等。spring-expression模块为运行时查询和操作对象提供了强大的表达式语言,它是jsp2.1中的el语言的扩展,这种语言支持设置和获取属性值,属性赋值,方法调用,访问数组,逻辑和算术运算符,还支持列表投影、选择和常见的聚合。

2.面向切面:spring的aop封装包提供了符合aop alliance规范的面向切面的编程实现,让你可以定义,例如方法拦截器和切点,从逻辑上讲,从而减弱代码的功能耦合,清晰的被分离开。

3.消息传送:spring framework 4包括一个spring-messaging模块,它是从spring集成项目的关键抽象,如message, messagechannel,messagehandle。该模块该包含一组注释映射消息的方法,类似spring mvc基于注释的编程模型。

4.数据访问/集成:这一层包括jdbc、orm、oxm、jms和事务模块。spring-jdbc模块提供了一个jdbc抽象层从而消除了令人乏味的jdbc编程和解析数据库提供商特定的错误。spring-tx模块支持类的编程和声明式事务管理,实现特殊的接口和你的pojo(plain old java objects)。spring-orm模块提供了流行的对象-关系映射集成层api,包括jpa、jdo和hibernate。使用spring-orm模块可以使这orm框架结合spring提供的其他特性,比如前面提到的简单的声明式事务管理。spring-oxm模块提供了一个抽象层,支持对象/xml映射的实现,如jaxb、 castor、xmlbeans、 jibx和xstream。

5.网络层:包括spring-web、spring-webmvc、spring-websocket和spring-webmvc-portlet模块。spring-web模块提供基础的针对web开发的集成特性,包括文件上传功能、利用servlet侦听器进行ioc容器初始化和针对web的应用上下文。它还包括一个http客户端和spring的web部件的远程支持。spring-webmvc模块包括spring的mvc模型和rest web服务实现的web应用程序,spring的mvc框架提供了一种清晰的分离模型,在领域模型代码和web form之间,并且还可以借助spring框架的其他特性。

6.测试层:spring-test模块支持单元测试和包含junit或者testng的集成测试,它提供了spring的applicationcontext一致性装载和这些上下文的缓存机制,它还提供了可用于测试代码隔离的模拟对象。

三、动手创建

概念先讲到这,先上手创建项目找找感觉。使用的是idea开发工具。创建项目开始(使用maven构建)

spring之旅第一篇-初识spring

在groupid中填入项目的包名即可。artifactid自定义即可,这里建议与项目名称一致。版本默认在groupid中填入项目的包名即可。artifactid自定义即可,这里建议与项目名称一致。版本默认.

spring之旅第一篇-初识spring

另外的是maven相关设置,不懂得同学可以先去学学maven,项目中都是必学的

spring之旅第一篇-初识spring

选择文件位置

spring之旅第一篇-初识spring

创建完成,项目架构如图(img与md文件是说明文件,不计其中)

spring之旅第一篇-初识spring

在main下新建文件夹resources用于存放资源文件

spring之旅第一篇-初识spring

在resources上右键,选择mark directory as 选中resources root

 

 spring之旅第一篇-初识spring

添加spring依赖包

 <dependency>
      <groupid>org.springframework</groupid>
      <artifactid>spring-context</artifactid>
      <version>4.2.6.release</version>
    </dependency>

pom.xml的完整配置如下:

<project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
  xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelversion>4.0.0</modelversion>

  <groupid>com.yuanqinnan</groupid>
  <artifactid>springlearn</artifactid>
  <version>1.0-snapshot</version>

  <name>springlearn</name>
  <!-- fixme change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceencoding>utf-8</project.build.sourceencoding>
  </properties>

  <dependencies>
    <dependency>
      <groupid>junit</groupid>
      <artifactid>junit</artifactid>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupid>org.springframework</groupid>
      <artifactid>spring-context</artifactid>
      <version>4.2.6.release</version>
    </dependency>
  </dependencies>

  <build>
</build>
</project>

在刚才新建的resources下新建meta-inf包,在meta-inf下新建applicationcontext.xml.

spring之旅第一篇-初识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"
       xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>

新建test包和helloworld.java,main.java结构如下:

spring之旅第一篇-初识spring

代码如下:

public class helloworld {

        private string info;

        public string getinfo() {
            return info;
        }

        public void setinfo(string info) {
            this.info = info;
        }
}
public class main {
    public static void main(string[] args)
    {
        //读取配置文件
        applicationcontext ctx=new classpathxmlapplicationcontext("meta-inf/applicationcontext.xml");
        //获取bean的实例
        helloworld t=(helloworld) ctx.getbean("hello");
        //调用方法
        system.out.println(t.getinfo());
    }
}

在applicationcontext.xml中配置bean

<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
       xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="hello" class="com.yuanqinnan.test.helloworld">
        <property name="info" value="hello,this is my first spring application!"></property>
    </bean>
</beans>

右键运行main

spring之旅第一篇-初识spring

得到结果:

spring之旅第一篇-初识spring

如此,一个spring项目便创建成功,后面再继续学习spring的其他知识

源码地址: