标题初探SpringBoot以及在Eclipse编写Hello World
最近在研究SpringBoot,起初接触的是Struts2、Hibernate和Spring,在延伸阅读中发现了SpringBoot,本文适用于刚接触SpringBoot却对后台程序配置部署一头雾水的入门级选手,大神绕过。
标题SpringBoot由来
#Spring Boot是由Pivotal
2013年由EMC、VMware和GE共同投资成立,再加上后来戴尔收购EMC成为股东,Pivotal可谓是含着金汤匙出生。基于Pivotal的敏捷开发、Pivotal Cloud Foundry (PaaS)云平台以及Pivotal大数据套件等解决方案和产品,Pivotal颠覆了世界软件的构建方式。2016年5月其获得C轮融资,福特领投,微软参与,估值达28亿美金。
团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。
相比于Spring,SpringBoot具有很多优化的地方,首先,Spring Boot可以建立独立的Spring应用程序,其内嵌了如Tomcat,Jetty和Undertow这样的容器,用不着再对Tomcat等环境进行部署,无需部署WAR文件;同时,无需像Spring那样配置一堆繁琐的xml文件,可以自动配置,SpringBoot将原有的XML配置转换为Java配置,将bean注入改为使用注解注入的方式(@Autowire),并将多个xml、properties浓缩在一个appliaction.yml配置文件中;另外,提供的POM可以简化Maven的配置。当我们引入核心依赖时,SpringBoot会自引入其他依赖。
标题在Eclipse编译器中部署SpringBoot环境
可以通过2种方式导入SpringBoot数据包:
- 在应用市场下载
点击Help-Marketplace进入应用市场 - 在Spring官网下载
登录spring官方网址,根据项目管理方式以及项目填写信息生成项目文件,并在Eclipse中打开。
介绍SpringBoot项目基本结构
(1)应用主类SpringbootApplication应该放于根目录下springboot下,通常在主类中做一些框架配置;
(2)实体(entity)与数据库访问层(Repository)位于domain包下;
(3)逻辑层位于service包下;
(4)Web层位于web包下;
(5)图片文件放于static文件夹下;
(6)html文件放于templates文件夹下;
(7)application.properties 文件主要配置一些数据库连接等信息。
下面是pom.xml文件内容:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
这里Maven的核心功能就是通过pom.xml文件的配置获取jar包,而不用手动去添加jar包,具体通过groupId、artifactId、version三个属性定位一个jar包。
DemoApplication.java是整个项目的启动文件,通过main函数中的SpringApplication.run函数启动
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
主函数调用管理类页面控制函数
package com.example.demo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("/")
public String hello()
{
return "<h1>Welcome to start SpringBoot!</h1>";
}
}
对于@SpringBootApplication注解,它包括三个注解:
1.@Configuration:表示将该类用做springboot配置文件类;
2.@EnableAutoConfiguration:表示程序启动时,自动加载springboot默认的配置;
3.@ComponentScan:表示程序启动时,自动扫描当前包及子包下所有类。
对于@RestController注解,表示用来接收HTTP请求,并且@RestController是@Controller和@ResponseBody的结合。
当客户端发出Http请求时,服务器后台调用HelloController类,通过hello函数相应请求。
当编辑好HelloController后,以Spring Boot App方式运行,编译器会自动搭建tomcat环境
当登录localhost:8080地址时,接收到hello()函数相应的返回字符串:
IOC和AOP的意思
想要学习SpringBoot,首先应该熟悉其内部的实现原理,其中IOC和AOP是两个主要的技术支撑:
控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。
面向切面编程(Aspect Oriented Programming,缩写为AOP)可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。