spring学习之spring框架介绍

spring学习之spring框架介绍

开始spring

如果你是刚使用spring的开发人员,可以先使用spring-boot来创建一个spring应用。他基于spring框架。主张约定优于配置。被设计成为尽可能快的运行。
参考代码及文档
快速学习spring指南
学习建立一个符合restful规范的web应用

spring框架的介绍

spring框架是一个java平台项目,他为java应用提供了基础架构支持。因此可以让开发者更加的专注与自己的应用项目。

可以从spring得到的帮助

  • 使一个java方法在数据库中执行事务,而不必处理任何的事务API
  • 使一个java方法在调用rpc远程调用时,而不必处理远程相关的API
  • 使一个java方法在本地管理操作,处理JMX API的
  • 使一个java方法的消息处理程序,不用使用jms消息的API

依赖注入和控制反转

spring认为,java的编写更加的偏向底层,对于企业应用程序比较薄弱。尽管java提供了丰富的应用功能,但是缺乏架构师和开发人员将java中诸多基础模块,组成一个连贯的整体。尽管你可以使用诸多的设计模式来完善你的项目。

但是spring的框架IOC组件,通过提供不同的组成成分为准备使用一个完全工作的应用程序手段解决这个问题,spring编写完善的设计模式可以集成到自己的项目中。很多组织和机构使用spring框架,来健壮自己的应用。

模块

spring包含20个模块,包含,代码容器,数据连接,web服务,aop切面,消息等。
spring框架运行时
spring框架运行时

核心容器

包含:spring-core,spring-beans,spring-context,spring-context-support,spring-expression。
spring-core,spring-beans提供spring的基础部分。包含IOC的依赖注入,BeanFactory是一个实现了复杂工厂模式。允许你从程序逻辑分离出依赖关系的配置。
spring-context是spring的上下文环境。事件程序,加载资源都是由上下文加载并创建上下文。
spring-expression提供了一个强大的表达式语言。

AOP的介绍

定义了一个切面,并允许你来自定义这个功能,举个例子,方法之前要执行的切面方法应该和业务方法是分开的。
spring-aspects提供了和aspectJ的整合

消息

spring-messageing提供了一个基础的消息应用。

数据接入

spring-jdbc提供了简单的数据链接
spring-tx提供了数据库的声明式事务控制处理
spring-oxm提供了对象或者映射方式的处理
spring-jms提供兼容java消息系统

web

spring-web 提供了基本面向web的功能,例如多文件上传,ioc初始化。servlet监听器,面向web应用的上下文,包含http服务,rpc服务等。
spring-webmvc 模型,视图,控制器的实现,restful web应用的实现,
spring-websocket

应用场景

典型的完整spring应用
典型的完整spring应用
使用第三方框架的spring应用
使用第三方框架的spring应用
rpc调用使用场景
rpc调用使用场景
包装现有对象类
包装现有对象类

依赖管理和命名约定

增加maven依赖

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.0.0.BUILD-SNAPSHOT</version>
        <scope>runtime</scope>
    </dependency>
</dependencies>

使用spring的中央仓库

<repositories>
    <repository>
        <id>io.spring.repo.maven.release</id>
        <url>http://repo.spring.io/release/</url>
        <snapshots><enabled>false</enabled></snapshots>
    </repository>
</repositories>

使用配置管理中指定spring所有依赖包版本都是同一个。

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-framework-bom</artifactId>
            <version>5.0.0.BUILD-SNAPSHOT</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

这样所有spring的依赖包都不需要在指定版本号

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
    </dependency>
<dependencies>

gradle的配置

repositories {
    mavenCentral()
    // and optionally...
    maven { url "http://repo.spring.io/release" }
}
dependencies {
    compile("org.springframework:spring-context:5.0.0.BUILD-SNAPSHOT")
    testCompile("org.springframework:spring-test:5.0.0.BUILD-SNAPSHOT")
}

日志

spring默认日志是commons-logging
禁用commons-loggin这样写

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>5.0.0.BUILD-SNAPSHOT</version>
        <exclusions>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

如果使用slf4j

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>5.0.0.BUILD-SNAPSHOT</version>
        <exclusions>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.5.8</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.5.8</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.5.8</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.14</version>
    </dependency>
</dependencies>

使用log4j

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>5.0.0.BUILD-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.14</version>
    </dependency>
</dependencies>

需要加一个资源文件log4j.properties

log4j.rootCategory=INFO, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %t %c{2}:%L - %m%n

log4j.category.org.springframework.beans.factory=DEBUG

参考文档:http://docs.spring.io/spring/docs/5.0.0.BUILD-SNAPSHOT/spring-framework-reference/htmlsingle/

  • 9
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值