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

Spring-概述

Spring概述

Spring Framework Reference Documentation(完全中文翻译)
http://itmyhome.com/spring/index.html

Spring官方API文档
https://docs.spring.io/spring-framework/docs/current/javadoc-api/overview-tree.html


IntelliJ IDEA 搭建Spring源码阅读环境

1、git clone 下载spring源码
https://github.com/spring-projects/spring-framework

2、IDEA 打开 spring-framework 源码,打开时提示如下,一切保持默认,什么都不用动,直接点OK,然后等待IDEA自动下载gradle,及gradle自动构建完成即可。


IDEA导入Spring源码

Spring IOC 容器源码分析系列文章导读
https://segmentfault.com/a/1190000015089790


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核心框架自带的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,182
阅读预计5分钟
创建日期 2015-07-10
修改日期 2019-01-30
类别
标签

页面信息

location:
protocol:
host:
hostname:
origin:
pathname:
href:
document:
referrer:
navigator:
platform:
userAgent:

评论