Spring系列目标:从入门掌握一个高级开发所需要的技能。
环境
jdk1.8
idea
maven-3.6.1
spring-5.2.3.RELEASE
整个spring系列使用官方最新版本5.2.3.RELEASE,会有大量案例,都是通过maven来管理的,所以maven是必备技能,对这块不熟悉的可以去看一下:
Spring框架:持续简化Java企业级开发的典范
Spring,这一卓越的Java框架,自诞生以来,便矢志不渝地追求着简化Java企业级开发的宏伟目标。历经十多年的风雨洗礼与技术迭代,Spring及其后续衍生的Spring MVC、Spring Boot、Spring Cloud等技术栈,始终坚守这一初心,不断推陈出新,致力于将开发的便捷性提升至新的高度。
Spring框架通过其强大的依赖注入(DI)和控制反转(IOC)机制,为开发者提供了灵活且高效的对象管理方式,极大地降低了模块间的耦合度,提升了代码的可维护性和可扩展性。此外,Spring还集成了众多企业级服务,如事务管理、AOP(面向切面编程)、消息传递、持久化框架集成等,这些服务在Spring的精心封装下,变得易于使用且功能强大。
尤为值得一提的是,Spring及其衍生技术栈在简化开发方面所做的努力,几乎涵盖了企业级应用开发的方方面面。从基础的Web应用开发,到复杂的微服务架构,Spring都提供了丰富的工具和库,帮助开发者快速构建稳定、可靠且高效的应用系统。可以说,除了业务逻辑代码这一开发者需要亲自编写的核心部分外,Spring几乎为我们处理了所有其他的事情,从而极大地节省了开发时间,提升了开发效率。
综上所述,Spring框架及其衍生技术栈,以其持续简化的开发理念和强大的功能支持,成为了Java企业级开发领域中的一颗璀璨明珠,为开发者提供了前所未有的便捷与高效。
不使用spring的情况下,开发一个项目可能需要2个月,用了spring可能1个月都不需要,你说这样的技术你想学么?
Spring框架:企业级开发的必备之选与代码提升的宝库
在当今的Java企业级开发领域,Spring框架无疑是一个举足轻重的存在。据统计,目前绝大多数(接近99%)的公司都在使用Spring或其衍生技术栈,这一数据在各大招聘网站上得到了充分的印证。无论是初入职场的新人,还是经验丰富的老手,掌握Spring都已成为一项必备技能,对于提升个人竞争力、拓宽职业道路具有重要意义。
Spring之所以能够得到如此广泛的认可,与其卓越的源码设计密不可分。Spring框架的源码设计堪称顶级,其优雅的结构、灵活的扩展性、以及高度的可维护性,在Java开源项目中独树一帜,至今仍未有能够全面超越其地位的项目出现。因此,对于希望提升代码能力的开发者而言,深入研究Spring源码无疑是一个明智的选择。通过剖析Spring源码,开发者可以学习到如何在复杂的系统中保持代码的清晰与简洁,如何设计易于扩展和维护的架构,以及如何优雅地处理各种企业级应用场景。
除了Spring之外,JDK的源码也是提升代码能力的宝贵资源。JDK作为Java语言的核心库,其源码中蕴含着众多大师的智慧与杰作。通过研读JDK源码,开发者可以深入了解Java语言的核心机制,掌握Java内存管理、多线程并发、类加载等底层原理,从而更加深入地理解Java语言的本质。
综上所述,无论是从企业级开发的应用广泛性,还是从源码设计的卓越性来看,Spring框架都堪称Java开发领域的佼佼者。同时,JDK源码也是提升代码能力不可或缺的重要资源。对于每一位致力于成为优秀Java开发者的朋友而言,深入学习和掌握Spring及JDK源码,无疑将为您的职业生涯增添浓墨重彩的一笔。
什么是spring?
spring是一个简化java企业级开发的一个框架,内部包含了很多技术,比如:控制反转&依赖注入、面向切面编程、spring事务管理、通过spring集成其他框架、springmvc、springboot、springcloud等等,这些都是围绕简化开发展开的技术,后面会对每个知识点详细介绍。
感受一下spring的强大
先让大家感受一下spring的强大,来激发大家学习的兴趣。
我们需要为移动端提供api接口,接口数据以json格式输出,使用java技术,实现过程大家应该比较熟悉,如下:
使用idea创建一个web项目
创建servlet,servlet中写业务代码,组装需要数据,将数据以json格式输出
在web.xml中配置servlet信息
将项目部署到tomcat中
原生的web项目开发过程都是上面这样,和业务相关的其实只有第2步,而其他几个步骤是每个web项目都需要的,像比较大的项目,会有很多web模块,每个模块都需要重复这些1/3/4操作步骤,还是相当繁琐的,也会耗费大量时间。
如果使用springboot来实现,过程会简化很多,来感受一下:
打开idea,点击File->New->Project,如下:
image
image
点击Spring Initializr->Next,如下图:
image
输入项目坐标信息,如下图:
image
选择Web->Spring Web->Spring Boot(2.24)->Next,如下图:
image
点击Finish,完成项目的创建,如下图:
image
项目结构如下图:
image
目前为止我们还未写一行代码,下面我们创建一个类HelloWorldController,代码如下:
package com.javacode2018;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
*/
@RestController
@RequestMapping("/helloWorld")
public class HelloWorldController {
@RequestMapping("/index")
public String index() {
return "hello world!";
}
}
大家先不用关注项目中代码什么意思,主要关注一下效果。
下面我们来启动项目。
注意项目中有一个自动生成的类:com.javacode2018.SpringDemo1Application,这个类包含了main方法,说明是可以运行的,我们运行一下,控制台输出:
. ____ _ __ _ _
/\ / _' __ _ () __ __ _ \ \ \ \
( ( )___ | '_ | '| | ' / _` | \ \ \ \
\/ _)| |)| | | | | || (| | ) ) ) )
' |____| .|| ||| |__, | / / / /
=========||==============|/=///_/
:: Spring Boot :: (v2.2.4.RELEASE)
2020-02-03 17:42:52.965 INFO 985848 --- [ main] com.javacode2018.SpringDemo1Application : Starting SpringDemo1Application on DESKTOP-3OB6NA3 with PID 985848 (E:\spring\spring-demo1\target\classes started by Think in E:\spring\spring-demo1)
2020-02-03 17:42:52.968 INFO 985848 --- [ main] com.javacode2018.SpringDemo1Application : No active profile set, falling back to default profiles: default
2020-02-03 17:42:55.440 INFO 985848 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2020-02-03 17:42:55.450 INFO 985848 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2020-02-03 17:42:55.451 INFO 985848 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.30]
2020-02-03 17:42:55.554 INFO 985848 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2020-02-03 17:42:55.554 INFO 985848 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 2546 ms
2020-02-03 17:42:55.691 INFO 985848 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2020-02-03 17:42:55.800 INFO 985848 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2020-02-03 17:42:55.802 INFO 985848 --- [ main] com.javacode2018.SpringDemo1Application : Started SpringDemo1Application in 3.219 seconds (JVM running for 4.096)
2020-02-03 17:43:17.691 INFO 985848 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2020-02-03 17:43:17.691 INFO 985848 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2020-02-03 17:43:17.695 INFO 985848 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 4 ms
效果如下图:
image
此时我们需要的功能已经实现了,然而到目前为止,只有HelloWorldController代码是我们写的,而我们没有去创建servlet、将返回的结果以json格式输出、配置web.xml,没有将项目发布到tomcat,没有去启动tomcat,而只启动了一个main方法,是不是非常神奇。创建servlet、通过response将数据以json格式输出、配置web.xml、发布项目到tomcat、启动tomcat等这些操作并不是说不需要,而是springboot内部已经帮我们实现了,对于开发者来说这些都被隐藏了,springboot让我们更关注业务代码的实现,从而最大限度的帮我们提升开发效率,简化项目的开发过程。
总结
这篇文章主要是让大家了解一下spring是什么,总的来说spring是一个非常优秀的java框架,这个框架的目标是为了简化企业级开发中需要用到的各种技术而存在的,后面的文章我们将一一介绍spring是如何做到简化项目开发的,如何让我们的项目更容易维护和扩展的,敬请期待!
系列文章持续更新中,关注我,学习更多java架构师技术!!!