SpingBoot项目搭建(详细)

SpingBoot

(原创:黑小子-余)

 

 

springboot官网:->点击<-

spring官网:->点击<-

 

1、SpringBoot简介

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

面试一句话安排的面试官明明白白:Springboot是一个快速开发框架,可以帮助咱们快速整合第三方经常使用框架,底层采用Maven继承,彻底注解化,简化Xml配置,内嵌Tomcat,最终以Java应用程序执行。用来简化Spring应用的初始搭建以及开发过程。虽说它是一个框架,实质上它就是一个Jar包。

 

Spring框架简介

在讲springboot时,必讲spring框架。多是由于我爱她,在隔壁村那个叫春天的姑娘,去年种稻谷比赛我输给了她,不过那一次交手以后,我至今忘不了她,明年的划龙舟比赛,我打算请假回去,由于她也参加了,咱们村若是没有我,划龙舟这个项目上,咱们村可能又会输。不扯犊子了,继续。

面试一句话安排的面试官明明白白:Spring是一个IOC(依赖注入)也称DI(控制反转)与AOP(面向切面)的容器框架。它的目的是:使现有的技术更加实用,推荐最佳的编码实现,从而简化企业开发。主要模块:核心容器、Spring上下文、SpringAopSpringDaoSpringROMSpringWebSpringMVC。spring的出现意义至关于改变了世界,它存在的意义毋庸置疑。

 

好处

1、解耦。(下降各个组件还有各层之间的耦合度)html

2、可使容器提供众多的服务。(如:事务管理、日志管理)前端

3、单例模式的支持。(容器提供单例模式的支持,开发人员不须要本身去编码实现)java

4AOP技术。(利用AOP能够实现权限拦截等功能)web

5、容器提供众多的辅助类。(这些辅助类能够加快项目的应用开发)面试

6、轻松与其它框架整合、集成。spring

 

控制反转、依赖注入、面向切面

IOC(控制反转):应用的自己不须要去建立和维护对象,而是交给它的外部容器去负责,这样控制权就交给了外部容器,从而耦合在一块儿。数据库

(如:咱们知道,在java中,实例化对象有三种方法:类构造器、静态工厂方法、实例工厂方法。在传统的java开发模式中,咱们须要用new来建立或者getInstance等直接或间接调用构造方法来建立一个对象;而在spring开发模式中,spring使用工厂模式为咱们建立了所须要的对象,咱们使用时,不须要本身去建立,而是直接去调用spring为咱们所提供的对象便可,这就是控制反转的思想。编程

 

DI(依赖注入):运行期间,对象由外部容器动态的注入到组件中,让BeanBean之间以配置文件组织在一块儿,而不是以硬编码的方式。Spring使用JavaBean对象的Set方法或者带参数的构造方法为咱们建立所需对象时将其属性自动设置成咱们须要的值的过程就是依赖注入的思想。)api

 

AOP(面向切面):开发人员只须要关心点或横切典型的职责分界线的行为(如:日志和事务管理),进行模块化。AOP原理是:Spring采用JDK的动态代理来实现。(在面向对象的思想中,咱们将事务纵向抽象成一个个的对象,而在spring的面向切面编程中,咱们将某些相似的方面横向抽象成一个切面,对这些切面进行一些如:权限验证、事务管理、日志管理等公用操做过程就是面向切面编程的思想。)浏览器

1代理模式——SpringAOP原理是:Spring采用JDK的动态代理来实现。

2单例模式——Spring的配置文件中定义Bean默认为单例模式。

3前端控制器模式——Spring提供Dispatcherservlet来对请求进行分发。

4工厂模式——在工厂模式中,咱们建立对象是不会对客户端暴露咱们建立的逻辑,而是提供一个共同的接口来指向新建立的对象。Spring中使用BeanFactory来建立对象的实例。

 

Spring事务

Spring支持两种事务:一种是编程式事务,一种是声明式事务。

编程式事务:这意味你经过编程的方式来管理事务,能够给你带来极大的灵活性,可是比较难以维护。

声明式事务:这意味你能够将业务代码和事务管理分离,你只需用注解和xml配置来管理事务,具备良好的适应性。

它和数据库事务同样,必须服从ACID原则:原子性、一致性、隔离性、持久性。

通俗理解,事务是一组原子操做单元,从数据库的角度来讲,事务是一组SQL指令,要么所有执行,要么所有撤销不执行。

(1)原子性:事务中最基本的操做单元,要么所有成功,要么所有失败,而后回滚。

(2)一致性:保证事务在执行以前和执行以后数据库都保持一致的状态。

3隔离性:指的是并发环境下,当不一样的事务同时操做相同的数据时,每一个事务都有各自完整数据空间。

4持久性:表示事务执行完毕后,数据库的数据是永久保存在数据库中的。

 

并发事务问题

1第一类丢失更新:撤销一个事务时,把其余事务已提交更新的数据覆盖。

2脏读:一个事务读取到另外一个事务未提交的更新数据。

3幻读和虚读:一个事务执行两次查询,第二次结果集包含第一次中没有或某些已经删除的数据,形成两次数据结果不一致;这是其中一个事务在这两次查询还在进行之中,插入或删除形成的。

4不可重复读:两个事务同时读取到同一条数据,此时恰好其中一个更新了数据,两个结果相异,不可被信任。

5第二类丢失更新:在不可重复读的状况下。若是两个事务都读取同一行,而后两个都进行了读写操做并提交,第一个事务所作的改变就会丢失。

 

 

 

2、SpringBoot搭建

本教程是在Eclipse开发工具中,IDEA中更快、更容易,里面有集成插件。

在线安装:注意我在我旧版本的Eclipse上安装插件时报错,百度试了不少方法没有成功。最后,我把旧版本Eclipse卸掉,去官网下载了最新版本成功了。

Eclipse官网:->点击<-

              Eclipse安装教程:->点击<-

 

(1)安装springboot插件。打开eclipse -> Help -> Eclipse Marktplace。

 

(2)进去在 Find 搜索 spring 或者 sts 在线查找。

 

 

(3)而后一直next,等下载加载完毕后,能够看到下图已经安装的插件。

 

 

(4)能够看到菜单项多出了 SpringBoot 这一项,表示成功了。

 

 

 

(5)接下来建立SpringBoot-1项目,如图

 

 

(5)这里我只勾选Spring Web,由于只作一个简单的演示。勾选其余的,太耗时。

 

 

 

 

(6)建立完成。这里有个问题,项目的包都是以文件夹形式存在的,那咱们来设置解决一下。

 

 

(7)鼠标右键,最后一项 properties。

 

 

 

 

(8)按图步骤,便可。

 

 

 

 

 

 

(9)如今来编写一个程序,建立controller包,加入controller类。注意左图这个方式是错误的,程序能跑,但页面说路径是错的,具体能够去参考springboot规范。右图这样成功运行。

 

(10)SpringBoot1Application执行程序类是自动生成的,咱们只需建立Controller类,建立一个方法,加入注解。

package com.springboot.demo.controller;

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

@RestController
public class MyController {

    @RequestMapping("/hello")
    public String Hello() {
        return "Hello 欢迎来到SpringBoot世界!";
    }
}

 

注解@RestController与@Controller的区别

 开发RESTful API 时,通常都会在Controller上加上@Controller注解,可是有时候加上@RestController,看了资料,说说他们的区别:
@RestController注解等价于@ResponseBody + @Controller。@RestController和@Controller的共同点是都用来表示Spring某个类是否能够接收HTTP请求,两者区别: @RestController没法返回指定页面,而@Controller能够;前者能够直接返回数据,后者须要@ResponseBody辅助。

   

   ① 是否能够返回页面

  答:@RestController没法返回指定页面,而@Controller能够。

  解析:对于Controller, 若是只是使用@RestController注解,则其方法没法返回指定页面,此时配置的视图解析器 InternalResourceViewResolver不起做用,返回的内容就是 return 里的内容。 若是须要返回到指定页面,则须要用 @Controller配合视图解析器InternalResourceViewResolver才行。
   

   ② 返回内容
  若是须要返回JSON,XML或自定义mediaType内容到页面,@RestController本身就能够搞定,这个注解对于返回数据比较方便,由于它会自动将对象实体转换为JSON格式。而@Controller须要在对应的方法加上@ResponseBody注解。

 

 

@RequestMapping:是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的全部响应请求的方法都是以该地址做为父路径。

 

 

@SpringBootApplication:主程序注解,用来开启springboot的各项能力。

 

(11)项目运行,有好几种,这种比较快捷。

 

 

(12)启动能够看到,8080端口号。

 

 

浏览器输入:http://localhost:8080/hello  ,成功输出。

 

 

 

 

 

 

 

 

 

 

 

 

 

-----------------------------------------------------------END----------------------------------------------------------------

 

qq:2931445528

 

微信:Y2931445528

相关文章
相关标签/搜索