zoukankan      html  css  js  c++  java
  • Spring系列之基本配置

    一、概述
    Spring是一个轻量级的Java开源框架,是为了简化企业级系统开发而诞生的。Spring的核心是控制反转(IOC)和面向切面编程(AOP)。主要有以下几个特点:
    (1)轻量:从大小和开销两方面而言Spring都是轻量的
    (2)控制反转:应用IOC,一个对象依赖的其他对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象
    (3)面向切面:Spring将业务逻辑从系统服务中分离开来,实现内聚开发
    (4)容器:它包含并且管理系统对象的生命周期和配置
    (5)框架:实现了使用简单的组件配置组合成一个复杂的系统

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

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

    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一致性装载和这些上下文的缓存机制,它还提供了可用于测试代码隔离的模拟对象。

    三、基本配置

    1、配置准备:下载Spring和commons-logging的jar包
    2、新建Java工程,将jar包导入工程中

    3、新建一个HelloWorld.java类

    复制代码
    package com.spring.test;
    
    public class HelloWorld {
        private String info;
    
        public String getInfo() {
            return info;
        }
    
        public void setInfo(String info) {
            this.info = info;
        }
    }
    复制代码

    4、在src目录下,新建xml文件,命名为applicationContext.xml,内容如下:

    复制代码
    <?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:p="http://www.springframework.org/schema/p"
        xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        ">
        
        <bean id="hello" class="com.spring.test.HelloWorld">  
            <property name="info" value="Hello,This is my first Spring Application!"></property>  
        </bean> 
    </beans>
    复制代码

    id: Bean 的唯一标识名。它必须是合法的 XML ID,在整个 XML 文档中唯一。
    class: 用来定义类的全限定名(包名+类名)。

    5、编写测试类TestMain.java

    复制代码
    package com.spring.test;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class TestMain {
        
        public static void main(String[] args)
        {
            //读取配置文件
            ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
            //获取bean的实例
            HelloWorld t=(HelloWorld) ctx.getBean("hello");
            //调用方法
            System.out.println(t.getInfo());
        }
    }
    复制代码

    运行程序,结果为:

    综上,一个简单的Spring应用已经配置好。

  • 相关阅读:
    C#
    C#
    ssh学习笔记
    (已解决)Could not open '/var/lib/nova/mnt/*/volume-*': Permission denied
    RPCVersionCapError: Requested message version, 4.17 is incompatible. It needs to be equal in major version and less than or equal in minor version as the specified version cap 4.11.
    如何在linux下安装idea
    The system has no LUN copy license
    调整mysql数据库最大连接数
    mysql数据库编码问题
    cinder支持nfs快照
  • 原文地址:https://www.cnblogs.com/zhuyuewei/p/7263922.html
Copyright © 2011-2022 走看看