Spring入门案例&模块简介

7 篇文章 0 订阅
3 篇文章 0 订阅

spring入门

Spring官网:https://spring.io,在spring的官网上有非常详细的文档。目前Spring框架最新版本为Spring5, Spring5要求的JDK最新的版本为JDK8。

一、什么是Spring

在狭义上,它可以用来指代Spring Framework项目本身,他是为了解决企业应用开发的复杂性而创建的。Spring框架使用基本的POJO来完成以前只可能由EJB完成的事情,从简单性,可测试性和松耦合的角度来看,java应用开发均可以从Spirng框架中获益。Spring框架的核心是控制反转和面向切面编程。简单来说,Spring框架是一个分层的,面向切面与java应用的一站式轻量级开源框架。

在广义上,随着时间的流逝,已经在Spring框架之上构建了其他Spring项目。通常,当人们说“Spring”时,它们表示整个项目系列(例如包括Spring boot,SpringSecurity, Spring mvc, Spring data,等等)。但是这里,我们要学习的只是Spring Framework这一个项目,以下文档的所有范围内的Spring均指代Spring Framework这一个项目。

Spring的优势:

为了降低Java开发的复杂性,Spring采取了以下4中策略:

  • 基于pojo的轻量级和最小侵入性编程

  • 通过依赖注入和面向接口实现松耦合

  • 基于切面和惯例进行声明式编程

  • 通过切面和模板减少样板式代码

几乎Spring做的任何事情都可以追朔到上述的一条或者多条策略。

对于轻量级一词的理解,轻量级所指的并不是类的数量的多少或者发布的大小,而是指使用这种框架,对我们原有程序的影响(或者说为了使用这种框架,我们需要对原有代码要做多少调整来适应框架的使用)。而我们说Spring是轻量级的,是因为只需要对应用程序做很少的改动,就能获得Spring Core给我们带来的巨大的好处。

二、spring的模块简介

spring是模块化的,允许我们开发人员自己自由选择需要使用的部分。

spring一共包含有21个不同的jar包,其中若干个包组成了一个大的模块系统

img

  • Spring Core 核心容器模块
    1. spring-core包和spring-beans包提供框架的基础部分,包括IOC和DI功能,BeanFactory是一个复杂的工厂模式的实现,无需编程就能实现单例,并允许开发人员将配置和特定的依赖从实际程序逻辑中解耦
    2. Context包建立在core和beans模块的基础之上,context继承了Beans模块的特性,并且增加了对国际化的支持,事件广播,资源加载和创建上下文等等
    1. spirng-expression包提供了强大的表达式语言
  • AOP模块

能够实现方法拦截器和切入点完全分离的代码。

  • 事务

  • 消息模块

  • 数据访问

提供了数据访问,事务,对象关系映射等功能的集成

  • web

即将要学习的Springmvc框架包含其中,两外还包括了spring5新增的支持响应式编程的Web开发框架

  • 测试

组合Junit或TestNG来实现单元测试和集成测试等功能

github上Spring的源码的所有包截图

img

三、Spring的HelloWorld入门案例

先例行公事,写一个Spring的HelloWorld程序,工程的结构如下

分别创建三个文件,MessageService, MyApplication, Service.xml

img

首先在我们的pom.xml中引入我们的Spring-context模块,使用的5.1.10版本,依赖如下:

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.1.10.RELEASE</version>
    </dependency>

然后分别贴出三个文件,首先是MessageService.java文件

package com.Joshua.classn.service;


public class MessageService {
    public void printMessage(){
        System.out.println("HelloWrold!");
    }
}

这个类超级简单,就是一个printMessage方法,方法的功能就是打印一个HelloWorld。

然后是service.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="messageService" class="com.Joshua.classn.service.MessageService"/>

</beans>

可以看到有一个bean标签,并且bean标签中有两个属性,一个是id,一个是class

  1. id是给我们的这个bean组件指定一个全局唯一的标识,通常会以类名,并且首字母小写作为该标识
  2. class指定该组件的类的类路径。

然后是我们的MyApplication类

package com.Joshua.classn;

import com.Joshua.classn.service.MessageService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


public class MyApplication {
    public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("service.xml");
        MessageService messageService = (MessageService)applicationContext.getBean("messageService");
        messageService.printMessage();
    }
}

在MyApplication中只写了一个main方法,在main方法中有两个关键的语句。

一个是new ClassPathXmlApplicationContext("service.xml");

还有一个就是getBean方法

最终我们执行MyApplication类中的main方法

可以发现,getBean方法返回的就是我们的一个messageService实例,而这个实例时由容器applicationContext中获取的得到的,而并非自己通过构造方法实例化的,可以通过获取到的实例调用了printMessage方法打印了HelloWorld。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值