欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

教妹学Java:Spring 入门篇

程序员文章站 2022-11-22 11:27:36
你好呀,我是沉默王二,一个和黄家驹一样身高,刘德华一样颜值的程序员(管你信不信呢)。从两位偶像的年纪上,你就可以断定我的码龄至少在 10 年以上,但实话实说,我一直坚信自己只有 18 岁,因为我有一颗好学的心。本篇文章就打算通过我和三妹对话的形式来学一学“Spring 的基础”。 教妹学 Java, ......

你好呀,我是沉默王二,一个和黄家驹一样身高,刘德华一样颜值的程序员(管你信不信呢)。从两位偶像的年纪上,你就可以断定我的码龄至少在 10 年以上,但实话实说,我一直坚信自己只有 18 岁,因为我有一颗好学的心。本篇文章就打算通过我和三妹对话的形式来学一学“spring 的基础”。

教妹学 java,没见过这么放肆的标题吧?“语不惊人死不休”,没错,本篇文章的标题就是这么酷炫,不然你怎么会点进来?

教妹学Java:Spring 入门篇

我有一个漂亮如花的妹妹(见上图),她叫什么呢?我想聪明的读者能猜得出:沉默王三,没错,年方三六。父母正考虑让她向我学习,做一名正儿八经的 java 程序员。我期初是反对的,因为程序员这行业容易掉头发。但家命难为啊,与其反对,不如做点更积极的事情,比如说写点有趣的文章教教她。

教妹学Java:Spring 入门篇

“二哥,你怎么现在才想起来要教我学 spring 啊?”

“没办法啊,三妹,之前教妹学 java 系列被喷的体无完肤,没办法就停滞了。今天决定走自己的路,让别人也走自己的路去。”

“我就说嘛,spring 在 java 中占据那么重要的位置,你竟然没舍得教我,还以为你怕被我拍死在沙滩上呢?”

“嗯,你天真了。”

01、spring 简史

“二哥,据说 spring 前后经历了 3 个时代,你能给我说说吗?”

“没问题啊。”

1)石器时代

也就是 spring 1.x 时代,一个项目看上去全都是 xml 文件,里面配置着各种各样的 bean,项目越大,xml 文件就越多,到最后人都感觉不好了,像回到了原始社会。

2)黑铁时代

也就是 spring 2.x 时代,终于可以使用注解配置 bean 了,这主要得益于 jdk 1.5 新增的注解功能。想一想,一个小小的注解,比如说 @component@service 就可以替代一大段的 xml 配置代码,简直爽歪歪啊。

使用 xml 文件配置数据源,使用注解配置业务类,两种方式相得益彰。

3)黄金时代

也就是 spring 3.x 至今,可以使用 java 配置的方式了。那什么是 java 配置呢?

其实从形式上看,java 配置和注解配置没什么区别,因为 java 配置也用的是注解,只不过,以前用 application-context.xml 配置数据源等信息,现在用 @configuration 注解的类配置。

02、spring 特性

“二哥,据说 spring 的特性非常丰富,你能给我说说吗?”

“没问题啊。”

1)核心技术:依赖注入(di)、面向切面编程(aop)、国际化、数据绑定、类型转换

2)测试:testcontext 框架、spring mvc 测试

3)数据访问:事务、jdbc、对象关系映射(orm)

4)spring mvc(一个模型 - 视图 - 控制器「mvc」的 web 框架)、spring webflux(一个典型非阻塞异步的框架)

5)spring integration(面向企业应用集成)

03、spring 生态

“二哥,据说 spring 的生态圈非常火热,你能给我说说吗?”

“没问题啊。”

1)spring boot:当下最火的一个 spring 项目了,使用它我们可以快速搭建好一个项目

2)spring cloud:为分布式开发提供了强大的工具集

3)spring security:通过认证和授权保护应用

4)spring web flow:基于 spring mvc 的流程式 web 应用

5)等等等等

04、快速搭建 spring 项目

“二哥,说了那么多,能不能来个上手项目,让我瞧瞧 spring 项目到底长什么样子?”

“马上就来,三妹。”

我推荐使用 intellij idea 作为集成开发工具,因为它插件丰富、功能全面。就我们目前的开发任务来说,社区版足够用了。

1)打开 idea,依次点击 file→new→project→maven。

教妹学Java:Spring 入门篇

2)点击 next 后填写项目的名称,然后创建项目。打开 pom.xml 文件,添加以下内容。

<dependencies>
    <dependency>
        <groupid>org.springframework</groupid>
        <artifactid>spring-context</artifactid>
        <version>5.2.2.release</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupid>org.apache.maven.plugins</groupid>
            <artifactid>maven-compiler-plugin</artifactid>
            <version>3.6.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

dependencies 节点下添加了 spring 的核心依赖 spring-context,它为 spring 提供了一个运行时的环境,用以保存各个对象的状态。它依赖于 spring 的四个核心组件:spring-aop、spring-beans、spring-core、spring-expression,也就是说只要引入 spring-context 的依赖,maven 会自动引入这四个核心。

build 节点下添加了 maven 的编译插件,并且指定了 java 的编译版本为 1.8。

3)idea 下编辑文件会自动保存,所以与此同时,maven 会将 spring 的依赖包全部下载到本地仓库中。

4)稍稍眯一会眼睛,就可以看到 spring 的依赖包了。

教妹学Java:Spring 入门篇

5)maven 是一个软件项目管理工具,基于项目对象模型(project object model,明白 pom.xml 的由来了吧?)的概念,可以管理项目依赖的 jar 包,对项目进行编译打包等。

6)新建 helloservice 类,代码如下:

@service
public class helloservice {
    public void hello (string what) {
        system.out.println("hello " + what);
    }
}

@service 注解一般在业务逻辑层使用。该类非常简单,只有一个方法 hello(),参数是字符串,然后在控制台打印 hello xxx

7)新建 helloconfig 类,代码如下:

@configuration
public class helloconfig {
    @bean
    public helloservice helloservice() {
        return new helloservice();
    }
}

@configuration 注解表明当前类是一个配置类,相当于 spring 配置的一个 xml 文件。

@bean 注解用在 helloservice() 方法上,表明当前方法返回一个 bean 对象(helloservice),然后将其交给 spring 管理。产生这个 bean 对象的方法只会被调用一次,随后 spring 将其放在自己的 ioc 容器中。

8)新建 hellomain 类,代码如下:

public class hellomain {
    public static void main(string[] args) {
        annotationconfigapplicationcontext context = new annotationconfigapplicationcontext(helloconfig.class);
        helloservice helloservice = context.getbean(helloservice.class);
        helloservice.hello("66666");
        context.close();
    }
}

hellomain 类中有一个 main() 方法,它负责将当前项目跑起来。

annotationconfigapplicationcontext 是一个用来管理注解 bean 的容器,可以将 @configuration 注解的类 class 作为参数获取容器对象。再通过 getbean() 方法获取注册的 bean 对象。获取到 helloservice 对象后,就可以让它说一声“66666”了。

教妹学Java:Spring 入门篇

“二哥,这篇文章中的示例代码你上传到码云了吗?最近 github 访问起来有点卡。”

“你到挺贴心啊,三妹。码云传送门~

“二哥,你教得真不错,我完全学会了,一点也不枯燥。”

“那必须滴啊,期待下一篇吧?”

“那是当然啊,期待,非常期待,望眼欲穿的感觉。”

教妹学Java:Spring 入门篇

05、鸣谢

请允许我热情地吐槽一下,这篇文章我不希望再被喷了,看在我这么辛苦搞原创(创意+干货+有趣)的份上,多鼓励鼓励好不好?别瞅了,点赞呗,你最美你最帅

(0)
打赏 教妹学Java:Spring 入门篇 微信扫一扫

相关文章:

  • 教妹学Java:Spring 入门篇

    Laravel打印执行的SQL语句

    DB::connection()->enableQueryLog();#开启执行日志 $result = DB::table('adv... [阅读全文]
  • 教妹学Java:Spring 入门篇

    PHP终止脚本执行的方法介绍

    终止脚本执行,指的是通过一条语句告诉PHP引擎,此语句之后的其他语句不需要执行。 PHP提供了三种方式来终止脚本执行:return,die,exit... [阅读全文]
  • 教妹学Java:Spring 入门篇

    C#特性学习笔记

    本笔记摘抄自:https://www.cnblogs.com/susufufu/p/6882498.html,记录一下学习过程以备后续查用。 一、官... [阅读全文]
  • 教妹学Java:Spring 入门篇

    线程池入门

    什么是池,我们在开发中经常会听到有线程池啊,数据库连接池等等。那么到底什么是池?其实很简单,装水的池子就叫水池嘛,用来装线程的池子就叫线程池(废话)... [阅读全文]
  • 教妹学Java:Spring 入门篇

    Java锁相关知识

    1. 锁的分类 Java中目前存在几大类型的锁 - 公平锁/非公平锁:是否按照访问的顺序获取锁。 - 共享锁/独占锁:共享锁可允许多个线程持有,例如... [阅读全文]

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

教妹学Java:Spring 入门篇
验证码: 教妹学Java:Spring 入门篇