SpringBoot系列课程(一)-构建第一个SpringBoot工程

1.Spring的发展

1.1 Spring1.x 时代

在Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分放到不同的配置文件中,需要频繁的在java类和xml配置文件中切换。appliationContext.xml 所有的对象和对象之间的关系 全部用xml文件配置!

	<bean id="userDAO" class="com.blog.dao.UserDAOImpl">
		<property name="hibernateTemplate" ref="hibernateTemplate"></property>
	</bean>
	
	<bean id="userService" class="com.blog.service.UserServiceImpl">
		<property name="userDAO">
			<ref bean="userDAO"/>
		</property>
	</bean>
	
	<bean id="loginAction" class="com.blog.action.LoginAction" scope="prototype">
		<property name="userService">
			<ref bean="userService"/>
		</property>
	</bean>

1.2 Spring2.x时代

  随着JDK 1.5带来的注解支持,Spring2.x可以使用注解对Bean进行申明和注入,大大的减少了xml配置文件,同时也大大简化了项目的开发。

  • @Configuration把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。
  • @Scope注解 作用域
  • @Service用于标注业务层组件、
  • @Controller用于标注控制层组件(如struts中的action)
  • @Repository用于标注数据访问组件,即DAO组件。
  • @Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

那么,问题来了,究竟是应该使用xml还是注解呢?

最佳实践

–应用的基本配置用xml,比如:数据源、加载资源文件等;

–业务开发用注解,比如:Service中注入bean等; @Resource @Autowire @Servevice @Controller…

项目:XML(数据源、加载资源文件) + 注解 (@Resource @Autowire @Servevice @Controller…

XML(基础的配置)+注解(对象之前的关系) 开发模式!!

1.3 Spring3.x到Spring4.x、Spring5.x

使用Java的类作为一个配置文件把传统 xml配置文件替换掉!

从Spring3.x开始提供了Java配置方式(使用Java中一个类来作为配置文件,使用类把XML文件替换),使用Java配置方式可以更好的理解你配置的Bean,现在我们就处于这个时代,并且Spring4.x和Spring boot都推荐使用java配置的方式。

后期开发的时候可以完全不用xml文件。全部用户注解和配置类方式完成

绿皮火车------ Spring XML配置

动车 --------- Spring XML配置 + 注解配置

高铁----------SpringBoot(注解+配置类)  脚手架  零XML配置   SSM  SSH SSS

2.SpringBoot快速入门

2.1.简介

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者的。

在以前的spring项目中,都会面对大量繁琐的配置,使用的时候基本上都是大量的复制黏贴。而Spring Boot 则能让我们在不需要过多的配置下,轻松快速地搭建Spring Web应用,开箱即用,没有代码生成,也无需XML配置,从而快速使用spring框架。

以往的spring应用往往需要大量的xml配置,为了改变这一现状spring团队引入了java config(主要依赖@Configuration、@Bean等注解)配置方案,但在整合第三方库时依然需要配置很多固定的Bean,这和xml配置一样仍然有些繁琐,因此spring boot项目应运而生,采用自动化配置方案简化spring应用开发的配置工作。

2.2 SpringBoot的特点

  • 为所有 Spring 的开发者提供一个非常快速的、广泛接受的入门体验
  • 绝对没有代码生成,也无需 XML 配置。
  • 快速创建独立运行的Spring项目以及与主流框架集成
  • 使用嵌入式的Servlet容器,应用无需打成WAR包
  • starters(场景启动器)自动依赖与版本控制
  • 大量的自动配置,简化开发,也可修改默认值
  • 无需配置XML,无代码生成,开箱即用
  • 准生产环境的运行时应用监控
  • 与云计算的天然集成
  • 与Spring Cloud (Alibaba)微服务框架天然集成

更多细节,大家可以到官网查看。

在这里插入图片描述
SpringBoot官方文档地址:

https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-documentation-about

2.3.HelloWorld

需求:
浏览器发送hello请求,服务器接受请求并处理,响应Hello World字符串;

  • 创建一个Maven工程
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 导入spring boot父工程
    看到这里很多同学会有疑惑,前面说传统开发的问题之一就是依赖管理混乱,怎么这里我们还需要管理依赖呢?难道SpringBoot不帮我们管理吗?

别着急,现在我们的项目与SpringBoot还没有什么关联。SpringBoot提供了一个名为spring-boot-starter-parent的工程,里面已经对各种常用依赖(并非全部)的版本进行了管理,我们的项目需要以这个项目为父工程,这样我们就不用操心依赖的版本问题了,需要什么依赖,直接引入坐标即可!

<?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.bruceliu.springboot.hello</groupId>
    <artifactId>springboot-hello</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

</project>
  • 导入spring boot 的Web启动器
    为了让SpringBoot帮我们完成各种自动配置,我们必须引入SpringBoot提供的自动配置依赖,我们称为启动器。因为我们是web项目,这里我们引入web启动器:
 <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
 </dependencies>

需要注意的是,我们并没有在这里指定版本信息。因为SpringBoot的父工程已经对版本进行了管理了。
这个时候,我们会发现项目中多出了大量的依赖:
在这里插入图片描述
这些都是SpringBoot根据spring-boot-starter-web这个依赖自动引入的,而且所有的版本都已经管理好,不会出现冲突。

  • 管理jdk版本
    默认情况下,maven工程的jdk版本是1.5,而我们开发使用的是1.8,因此这里我们需要修改jdk版本,只需要简单的添加以下属性即可.如果是1.8的JDK,那么可以不配置。
  <properties>
      <java.version>1.8</java.version>
  </properties>
  • 完整的POM文件
<?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.bruceliu.springboot.hello</groupId>
    <artifactId>springboot-hello</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

</project>
  • 启动类
    Spring Boot项目通过main函数即可启动,我们需要创建一个启动类:
    在这里插入图片描述
    然后编写main函数:
/**
 * @author bruceliu
 * @create 2019-04-30 23:52
 * @description
 */
@SpringBootApplication
public class APP {
    public static void main(String[] args) {
        SpringApplication.run(APP.class, args);
    }
}
  • 控制器
    接下来,我们就可以像以前那样开发SpringMVC的项目了!
    我们编写一个controller:
    在这里插入图片描述
    代码:

/**
 * @author bruceliu
 * @create 2019-04-30 23:54
 * @description
 */
@RestController
public class HelloController {

    @GetMapping("hello")
    public String hello(){
        return "hello, spring boot!";
    }
}
  • 启动测试
    接下来,我们运行main函数,查看控制台,并且可以看到监听的端口信息:
    在这里插入图片描述
    1)监听的端口是8080
    2)SpringMVC的映射路径是:/
    3)/hello路径已经映射到了HelloController中的hello()方法

  • 测试: 打开页面访问:http://localhost:8080/hello
    在这里插入图片描述

2.4.Jar包部署

2.4.1.插件支持

<build>
    <plugins>
        <!-- springboot maven打包-->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

2.4.2.打包

在这里插入图片描述

2.4.3.运行

窗口运行:java -jar xxx.jar
后台运行(linux): nohup java -jar XXX.jar &

3.SpringBoot另外构建方式

3.1.方法一:在 Spring Boot官方Initializer页面在线构建工程再导入到Idea中

https://start.spring.io/

在这里插入图片描述

3.2.方法二:使用IDEA自动构建SpringBoot工程

直接在Idea中Create New Project --> Spring Initializr --> 填写group、artifact -->钩上web --> 点下一步就行了
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

IDE都支持使用Spring的项目创建向导快速创建一个Spring Boot项目;选择我们需要的模块;向导会联网创建Spring Boot项目;

默认生成的Spring Boot项目;

  • 主程序已经生成好了,我们只需要我们自己的逻辑
  • resources文件夹中目录结构
    • static:保存所有的静态资源; js css images;
    • templates:保存所有的模板页面;(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面);可以使用模板引擎(freemarker、thymeleaf);
    • application.properties:Spring Boot应用的配置文件;可以修改一些默认设置;

4.自定义Banner

启动Spring Boot项目后会看到这样的图案:
在这里插入图片描述
这个图片其实是可以自定义的:
现在该怎么做呢?

1.打开网站:
http://patorjk.com/software/taag/#p=display&h=1&f=Graffiti

2.拷贝生成的字符到一个文本文件中,并且将该文件命名为banner.txt
将banner.txt拷贝到项目的resources目录中:
在这里插入图片描述
3.重新启动程序,查看效果:
在这里插入图片描述
如果不想看到任何的banner,也是可以将其关闭的:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值