2019-03-22 18:16

Springboot学习笔记(一)

王姐姐

JavaEE

(1965)

(0)

收藏

blog

1. Spring Boot简介

Spring 诞生时是 Java 企业版(Java Enterprise Edition,JEE,也称 J2EE)的

轻量级代替品。无需开发重量级的 Enterprise JavaBean(EJB),Spring 为企业级

Java 开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java 对象(Plain Old Java Object,POJO)实现了 EJB 的功能。

虽然 Spring 的组件代码是轻量级的,但它的配置却是重量级的。


第一阶段:xml配置

在Spring 1.x时代,使用Spring开发满眼都是xml配置的Bean,随着项目的扩大,我们需要把xml配置文件放到不同的配置文件里,那时需要频繁的在开发的类和配置文件之间进行切换


第二阶段:注解配置

在Spring 2.x 时代,随着JDK1.5带来的注解支持,Spring提供了声明Bean的注解(例如@Component、@Service),大大减少了配置量。主要使用的方式是应用的基本配置(如数据库配置)用xml,业务配置用注解


第三阶段:java配置

Spring 3.0 引入了基于 Java 的配置能力,这是一种类型安全的可重构配置方式,可以代替 XML。我们目前刚好处于这个时代,Spring4.x和Spring Boot都推荐使用Java配置。

所有这些配置都代表了开发时的损耗。 因为在思考 Spring 特性配置和解决业务问题之间需要进行思维切换,所以写配置挤占了写应用程序逻辑的时间。除此之外,项目的依赖管理也是件吃力不讨好的事情。决定项目里要用哪些库就已经够让人头痛的了,你还要知道这些库的哪个版本和其他库不会有冲突,这难题实在太棘手。并且,依赖管理也是一种损耗,添加依赖不是写应用程序代码。一旦选错了依赖的版本,随之而来的不兼容问题毫无疑问会是生产力杀手。


Spring Boot 让这一切成为了过去。

Spring Boot 简化了基于Spring的应用开发,只需要“run”就能创建一个独立的、生产级别的Spring应用。Spring Boot为Spring平台及第三方库提供开箱即用的设置(提供默认设置),这样我们就可以简单的开始。多数Spring Boot应用只需要很少的Spring配置。

我们可以使用SpringBoot创建java应用,并使用java –jar 启动它,或者采用传统的war部署方式。


Spring Boot 主要目标是:


l 为所有 Spring 的开发提供一个从根本上更快的入门体验


l 开箱即用,但通过自己设置参数,即可快速摆脱这种方式。


l 提供了一些大型项目中常见的非功能性特性,如内嵌服务器、安全、指标,健康检测、外部化配置等


l 绝对没有代码生成,也无需 XML 配置。


2. Spring Boot 入门

2.1. 环境准备

数据库:MySQL


IDE:Eclipse Mars2


Spring-Boot:1.4.4


Maven: 3.3.3 (官方声明1.4.4版本需要Maven 3.2+)


本地仓库:需要使用资料中的仓库


2.2. 起步依赖

2.2.1. 创建一个Maven工程

 


2.2.2. 添加依赖

在pom.xml中添加依赖,效果如下


我们会惊奇地发现,我们的工程自动添加了好多好多jar 包,而这些jar 包正式我们做开发时需要导入的jar 包。


因为这些jar 包被我们刚才加入的spring-boot-starter-web 所引用了,所以添加spring-boot-starter-web后会自动把依赖传递过来。


2.3. 变更JDK版本

我们发现默认情况下工程的JDK版本是1.6,但是通常使用的是1.7的版本


修改JDK为1.7,需要在pom.xml中添加以下配置:


使用Maven更新工程后,就发现版本已经变成1.8了


注意:


虽然JDK1.6或者1.7都可以使用Spring-Boot,但Spring-Boot官方建议使用JDK1.8。要使用JDK1.8,首先必须要配置JDK1.8后,才可以使用上述方法设置。


2.4. 引导类

需要创建一个引导类:


import org.springframework.boot.SpringApplication;


import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication


public class Demo {


public static void main(String[] args) {


SpringApplication.run(Demo.class, args);


}


}


这里多了一个@SpringBootApplication注解


@Configuration: 用于定义一个配置类


@EnableAutoConfiguration :Spring Boot 会自动根据你jar 包的依赖来自动配置


项目。


@ComponentScan: 告诉Spring 哪个packages 的用注解标识的类会被spring


自动扫描并且装入bean 容器。

 

Banner


直接启动,控制台出现以下标识。


  .   ____          _            __ _ _


 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \


( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \


 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )


  '  |____| .__|_| |_|_| |_\__, | / / / /


 =========|_|==============|___/=/_/_/_/


 :: Spring Boot ::        (v1.4.4.RELEASE)


 


这个标识是Spring启动标识,如果不想要,可以设置取消


import org.springframework.boot.Banner.Mode;


import org.springframework.boot.SpringApplication;


import org.springframework.boot.autoconfigure.SpringBootApplication;


 


@SpringBootApplication


public class Application {


 


public static void main(String[] args) {


// SpringApplication.run(Application.class, args);


SpringApplication application = new SpringApplication(Application.class);


application.setBannerMode(Mode.OFF);


application.run(args);


}


}



参考附录二的banner设置,可以通过修改配置文件制定自己的标识。


 


2.5. 入门程序

需求:使用Spring MVC实现Hello World输出


 


2.5.1. 原来的实现

我们现在开始使用spring MVC 框架,实现json 数据的输出。如果按照我们原来的做法,需要在web.xml 中添加一个DispatcherServlet 的配置,还需要添加一个spring的配置文件,配置文件如下配置


 

还要编写Controller。。。


 


2.5.2. Spring-Boot的实现

我们不需要配置文件,直接编写Controller类即可


import org.springframework.web.bind.annotation.RequestMapping;


import org.springframework.web.bind.annotation.RestController;


 


@RestController


public class HelloWorldController {


 


@RequestMapping("info")


public String info() {


return "Hello world!";


}


 


}


 


@RestController注解:其实就是@Controller和@ResponseBody注解加在一起


 


启动方式一:启动之前编写的引导类即可


启动方式二:使用Maven命令spring-boot:run执行即可


选择 Maven Build


 


 


在浏览器地址栏输入http://localhost:8080/info 即可看到运行结果


 


2.6. 热部署

我们在开发中反复修改类、页面等资源,每次修改后都是需要重新启动才生效,这样每次启动都很麻烦,浪费了大量的时间。


 


能不能在我修改代码后不重启就能生效呢?可以,由于Spring Boot应用只是普通的Java应用,所以JVM热交换(hot-swapping)也能开箱即用。不过JVM热交换能替换的字节码有限制,想要更彻底的解决方案可以使用Spring Loaded项目或JRebel。 spring-boot-devtools 模块也支持应用快速重启(restart)。


原文:https://blog.csdn.net/m0_37106742/article/details/64438892 


0条评论

点击登录参与评论