前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring学习(1):入门

Spring学习(1):入门

原创
作者头像
啃饼思录
修改2020-07-10 09:48:29
3740
修改2020-07-10 09:48:29
举报

Spring概述

Spring是一个开源框架,Spring是为简化企业级应用开发而生的,使用Spring可以使简单的JavaBean实现以前只有EJB才能实现的功能;Spring是JavaEE/JavaSE的一站式框架。JavaEE在开发过程中会将服务器划分为三层:Web层,业务逻辑层,持久层。Spring对于这三层都提供了较为完善的解决方案:在Web层提供了SpringMVC;业务逻辑层提供了用于Bean管理的SpringIOC和事务;持久层提供了JDBC Template,或者与Mybatis等ORM框架进行整合。

优点:

接下来是Spring的模块(本文以Spring4为例进行学习介绍):

Spring Ioc实现原理

下载Spring

Spring官网并不直接提供Spring的下载,Spring现在托管在GitHub上,相应的下载步骤如下:你可以点击这里查看文章下载Spring,或者直接看下面的步骤:

1、进入Spring官网 -> PROJECTS -> SPRING FRAMEWORK:

2、点击GitHub的图标,进入GitHub:

3、进入Spring仓库后,继续按照图示操作进行:

接着点击org -> springframework -> spring,选择要下载的版本,展开它:

Spring目录分析

docs文件夹里是一些html文件,是Spring的API文档。libs文件夹里是Spring的jar包,一共63个。

正如你所看见的文件是三个一组,其中.RELEASE.jar用于项目中,.RELEASE-javadoc.jar是该jar包的说明文档,.RELEASE-source.jar是该jar包的源码,也就是说真正在项目中用的就只有21个。

虽然有这么多包,但是只有4个是Spring的基础包,分别对应Spring核心容器的4个模块,注意它们是Spring项目必须的。

spring-core-5.1.8.RELEASE.jar是Spring的核心工具类,其它jar包是建立这个包基础上的,都要用到这个包中的类;

spring-beans-5.1.8.RELEASE.jar通常用于配置、创建、管理Bean,同时负责Ioc控制反转和DI依赖注入;

spring-context-5.1.8.RELEASE.jar用于提供在基础IoC上的扩展服务

spring-expression-5.1.8.RELEASE.jar用于提供对Spring表达式语言的支持。

另外Spring核心容器依赖第三方的commons.logging.jar包,需要自己去下载这个包;通常也会添加log4j包用于开发时的代码调式和测试。

总结起来就是:使用Spring时,需要把Spring自带的21个jar包+1个第三方的commons.logging.jar包添加到项目中即可。

Spring Ioc快速入门

下载安装Spring开发包-->复制Spring jar包至工程-->理解IOC控制反转和DI依赖注入-->编写Spring核心配置文件-->在程序中读取Spring配置文件,并通过Spring获得Bean,最终实现操作Bean的目的。

入门小demo

使用IDEA创建一个webapp项目,接着配置pom.xml:

代码语言:txt
复制
<dependencies>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

<version>4.2.4.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-core</artifactId>

<version>4.2.4.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-beans</artifactId>

<version>4.2.4.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-expression</artifactId>

<version>4.2.4.RELEASE</version>

</dependency>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.13</version>

</dependency>

<dependency>

<groupId>log4j</groupId>

<artifactId>log4j</artifactId>

<version>1.2.17</version>

</dependency>

</dependencies>

接着在main包下面新建一个java源程序包,然后在main包中新建com/envy.service文件包,里面新建一个接口UserService.java的文件:

代码语言:txt
复制
public interface UserService {

public void sayHello();

}

为了实现这个接口,在该service包中新建一个UserServiceImpl.java的文件:

代码语言:txt
复制
public class UserServiceImpl implements UserService {

private String name;

public String getName(){

return this.name;

}

public void setName(String name){

this.name=name;

}

public void sayHello() {

System.out.println("hello,spring!");

}

}

接着在main包下面新建一个与java同级的test文件夹,该文件夹是一个测试目录,然后在该test包中新建com/envy.test文件包,里面新建一个测试文件UserServiceTest.java

代码语言:txt
复制
/**

* 传统开发模式

**/

@Test

public void testOne() {

// UserService userService = new UserServiceImpl();

// userService.sayHello();

UserServiceImpl userServiceimpl = new UserServiceImpl();

userServiceimpl.setName("张三");

System.out.println(userServiceimpl.getName());

userServiceimpl.sayHello();

}

上面是传统的开发模式,如果单纯的需要使用sayHello方法,那么可以直接调用被注释的两行代码(只需要让接口的引用指向实现类的引用即可,无需创建实现类对象);如果是需要获取对象的属性,那么需要创建一个实现类对象,然后使用setter和getter方法分别去赋值和获值,这是非常麻烦的,因为涉及到修改实现类中的原始代码。

但是如果你是用SpringIOC 和DI的话,就需要按照如下进行操作:

第一步:在resource包中新建一个applicationContext.xml文件,里面的代码如下:

代码语言:txt
复制
<?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">

<!-- 将userService的创建权交给了Spring -->

<bean id="userService" class="com.envy.service.UserServiceImpl">

<!-- 属性控制 -->

<property name="name" value="李四"></property>

</bean>

</beans>

最后在UserServiceTest测试文件中写入以下代码:

代码语言:txt
复制
/**

* Spring开发模式

**/

@Test

public void testTwo() {

//创建Spring的工厂

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");

//通过工厂获得类,参数是applicationContext.xml文件中的Bean的id,返回对象是Bean中的class对象

UserServiceImpl userServiceimpl = (UserServiceImpl) applicationContext.getBean("userService");

//调用对象的方法

System.out.println(userServiceimpl.getName());

userServiceimpl.sayHello();

}

注意到没有,需要使用属性只需在bean中进行property设置,然后在测试文件中直接调用实现类对象的getter方法就可以。更重要的是我们的Bean对象不再是自己来创建了,而是通过Spring来创建。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Spring概述
  • Spring Ioc实现原理
    • 下载Spring
      • Spring目录分析
      • Spring Ioc快速入门
        • 入门小demo
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档