当前位置 : 首页 » 文章分类 :  开发  »  Spring-概述

Spring-概述

Spring概述


spring入门实例

添加spring依赖

Eclipse中创建一个maven-archetype-quickstart 简单maven项目(非web项目),Artifact Id(即maven工程名)为spring-test,在pom.xml文件中添加spring的依赖,保存后稍等片刻,maven会将spring依赖的jar包下载到本地仓库目录中。

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!-- Spring版本 -->
    <spring.version>3.1.4.RELEASE</spring.version>
</properties>

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>

    <!-- Spring -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aspects</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>

</dependencies>

创建类Hello

创建包com.masi.jmx.spring,在包内创建类Hello:

package com.masi.jmx.spring;

public class Hello
{
    String name;
    public void printHello() {
        System.out.println("你好,"+name);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

创建spring上下文配置文件

编辑Java Build path,创建src/main/resources文件夹,在其中新建xml配置文件applicationContext-hello.xml,添加Hello类的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.masi.jmx.spring.Hello">
        <property name="name" value="Matt马特" />
    </bean>

</beans>

通过应用上下文获取bean

在包com.masi.jmx.spring中新建类HelloMain,加载spring上下文配置,获取bean,调用类方法:

package com.masi.jmx.spring;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class HelloMain {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-*.xml");
        Hello hello = (Hello)context.getBean("hello");
        hello.printHello();
    }
}

Run As->Java Application 运行,查看结果。


spring模块

  1. spring核心容器:提供依赖注入、Bean工厂、应用上下文
  2. AOP模块:提供面向切面编程
  3. 数据访问与集成:提供JDBC和DAO,以及ORM(Object-Relational Mapping)模块,例如Hibernate,iBatis
  4. Web与远程调用:Spring MVC框架,
  5. 测试模块

依赖注入

依赖注入和控制翻转是一个意思。
依赖注入(Dependency Injection, DI)
所谓依赖注入就是指:组件之间的依赖关系由容器在运行期决定,即由外部容器动态地将依赖对象注入到组件中。
目的是解除耦合,对象间只通过接口来表明依赖关系。
Spring通过依赖注入模式,将依赖关系从编码中脱离出来,从而大大降低了组件之间的耦合,实现了组件真正意义上的即插即用。这也是Spring最具价值的特性之一。
依赖注入,即控制反转(Inversion of Control, IoC)
所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。

POJO类
Plain Ordinary Java Object,简单的Java对象,有一些private的参数作为对象的属性,然后针对每个参数定义了get和set方法作为访问的接口,有一些简单的运算属性也是可以的,但不允许有业务逻辑。


面向切面编程

面向切面编程(Aspect Oriented Programming, AOP)


spring容器

Spring自带了多个容器实现,可以归为两种不同的类型:
Bean工厂,最简单的容器,提供基本的DI支持,由org.springframework.beans.factory.BeanFactory接口定义
应用上下文,基于Bean工厂构建,由org.springframework.context.ApplicationContext接口定义
应用上下文使用更多、更普遍一些。


应用上下文

spring通过应用上下文(Application Context)装载Bean的定义并把它们组装起来。

spring自带的几种应用上下文,它们之间主要的区别仅仅在于如何加载配置。

  • ClassPathXmlApplicationContext,从类路径下的xml配置文件中加载上下文定义,把应用上下文定义文件当做类资源
  • FileSystemXmlApplicationContext,读取文件系统下的xml配置文件并加载上下文定义
  • XmlWebApplicationContext,读取Web应用下的xml配置文件并装载上下文定义

加载spring上下文示例

比如想调用ras.warning.service.MQPushService类的pushMQ()函数,用ClassPathXmlApplicationContext类加载xml配置,然后调用上下文的getBean()方法从Spring容器中获取bean,调用其中的方法。

package com.travelsky.adap.re.ras.warning.service;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.travelsky.adap.re.ras.warning.service.MQPushService;

public class MQPushServiceTest {

    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"config/applicationContext-warning-push.xml","config/applicationContext-jms-ca.xml"});
        MQPushService pushService = (MQPushService)context.getBean("MQPushService");
        pushService.pushMQ("ca", "本地MQ推送测试", "plf");
    }

}

加载多个配置文件

要想加载多个xml,可以有下面两种方法:

  • 使用一个String数组,将所有要加载的配置文件放入到数组当中:
    ApplicationContext ab = new ClassPathXmlApplicationContext(new String[]{"a.xml","b.xml"});
  • 或者用通配符:
    ApplicationContext ab = new ClassPathXmlApplicationContext("classpath:config/applicationContext-*.xml");

spring自带命名空间

spring核心框架自带的10个xml命名空间

命名空间 用途
aop 为声明切面以及将@AspectJ注解的类代理为Spring切面提供了配置元素
beans 声明bean和装配bean
context 配置Spring应用上下文,自动检测、自动装配bean,注入非Spring直接管理的对象
jee 提供了与java ee API的集成,例如JNDI和EJB
jms 为声明消息驱动的pojo提供了配置元素
lang 支持由Groovy、JRuby和BeanShell等脚本实现的bean
mvc 启用Spring MVC
oxm 支持Spring的对象到xml映射配置
tx 提供声明式事务配置
util 提供工具类元素


参考

跟我学spring3笔记–私塾在线
http://sishuok.com/forum/blogCategory/showByCategory/60/49.html?user_id=2

spring framework核心框架体系结构
https://zhuanlan.zhihu.com/p/24204354


上一篇 Java-集合框架基础

下一篇 Java-字符串

阅读
1,467
阅读预计6分钟
创建日期 2015-07-10
修改日期 2018-06-11
类别
标签
百度推荐