首页 > 技术文章 > springboot(一).初识springboot以及基本项目搭建

GodHeng 2018-07-05 15:05 原文

                                                                                 初识springboot 以及基本项目搭建

       由于新的项目需要搭建后台框架,之前的springmvc架构也使用多次,在我印象中springboot的微服务架构更轻量级更容易搭建,所以想去试试springboot的项目搭建,接下来,和大家分享一下初识springboot后对springboot的理解以及springboot的搭建过程

一.什么是springboot?为什么要使用springboot?

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。在我看来,

  springboot就是spring以及springmvc的衍生,是“懒人工具包”

     spring boot只是一个配置工具,整合工具,辅助工具.

  springboot 最大化的实现了convention over configuration(约定大于配置)

Spring 框架就像一个家族,有众多衍生产品例如 boot、security、jpa等等。但他们的基础都是Spring 的ioc和 aop. ioc提供了依赖注入的容器, aop解决了面向横切面的编程,然后在此两者的基础上实现了其他延伸产品的高级功能。

Spring MVC是基于Servlet 的一个 MVC 框架主要解决 WEB 开发的问题,因为 Spring 的配置非常复杂,各种XML、 JavaConfig、hin处理起来比较繁琐。于是为了简化开发者的使用,从而创造性地推出了Spring boot,约定优于配置,简化了spring的配置流程。

说得更简便一些:Spring 最初利用“工厂模式”(DI)和“代理模式”(AOP)解耦应用组件。大家觉得挺好用,于是按照这种模式搞了一个 MVC框架(一些用Spring 解耦的组件),用开发 web 应用( SpringMVC )。然后发现每次开发都写很多样板代码,为了简化工作流程,于是开发出了一些“懒人整合包”(starter),这套就是 Spring Boot。

总结一下springboot的优点:

(1). 遵循"约定优于配置"原则,使用Spirng Boot只需很少的配置,大部分时候可以使用默认配置;

(2)   项目快速搭建,另外还可以无配置整合第三方框架;

(3) 简化Maven及Gradle配置

(4)   内嵌入Servlet如Tomcat、jetty容器,应用可用jar包运行(java -jar);

(5) 可完全不使用xml配置,只使用自动配置和Java Config;

(6) 有多种强大的开发包,支持热启动 

spring-boot-starter-web:支持全栈web开发,里面包括了Tomcat和Spring-webmvc。

spring-boot-starter-mail:提供对javax.mail的支持.

spring-boot-starter-ws: 提供对Spring Web Services的支持

spring-boot-starter-test:提供对常用测试框架的支持,包括JUnit,Hamcrest以及Mockito等。

spring-boot-starter-actuator:支持产品环境下的一些功能,比如指标度量及监控等。

spring-boot-starter-jetty:支持jetty容器。

spring-boot-starter-log4j:引入默认的log框架(logback) 

了解了springboot的概念和优势之后,让我们来试一下如何在短短几分钟内搭建springboot项目

 

二. springboot项目搭建

1.新建maven应用(在idea下新建maven应用)

 

2.新建maven应用之后,开始配置pom.xml然后import。

在pom中添加以下配置

 1 <!-- Spring boot 父引用-->
 2     <parent>
 3         <groupId>org.springframework.boot</groupId>
 4         <artifactId>spring-boot-starter-parent</artifactId>
 5         <version>1.4.0.RELEASE</version>
 6     </parent>
 7 
 8     <!-- Spring boot 核心web-->
 9     <dependencies>
10         <dependency>
11             <groupId>org.springframework.boot</groupId>
12             <artifactId>spring-boot-starter-web</artifactId>
13         </dependency>
14     </dependencies>

3. 然后我们新建controller  

UserController

@RestController
public class UserController {

    //日志
    private final Logger log = LoggerFactory.getLogger(UserController.class);


    @Autowired//自动注入,可以直接省略掉set和get,它会帮我们set和get
    private UserService userService;

    @RequestMapping("/getUser")
    public User getUser() {
        return userService.getUser();
    }
    @RequestMapping(value="/addUser")
    public int addUser() {
    	List<User> users = new ArrayList<User>();
        User user = new User();
        user.setId(2);
        user.setPassword("32131");
        user.setUsername("萨达");
    	users.add(user);
        log.info("我的用户名是"+user.getUsername()+"我的密码是"+user.getPassword());
        return userService.addUserWithBackId(users);
    }
}

这里我的接口调用了service和数据库,大家在写这个controller的时候先随便返回一下,如system.out等。

4.我们在包的最外层增加新的应用启动入口 —> Application

/**
* @EnableAutoConfiguration:spring boot的注解,一般只用于主类,
* 是无xml配置启动的关键部分,明确指定了扫描包的路径为其修饰的主类的包(这也就是为什么主类要放在根包路径下的原因)
* 
* @ComponentScan 进行包的扫描,扫描路径由@EnableAutoConfiguration指定了
* 
* 主类要位于根包路径下,方便之后的扫描(We generally recommend that you locate your main application class in a root package above other classes.)
* 
    主类要位于根包路径下(例如,com.xxx.firstboot),这是推荐做法,方便扫描
    每一个jar(即每一个子项目)都要有一个主方法,用于启动该jar(也就是一个微服务)
    在主类上添加注解@SpringBootApplication,该注解相当于添加了如下三个注解
        @Configuration:该注解指明该类由spring容器管理
        @EnableAutoConfiguration:该注解是无xml配置启动的关键部分
        @ComponentScan:该注解指定扫描包(如果主类不是位于根路径下,这里需要指定扫描路径),类似于spring的包扫描注解

*/
//same as @Configuration+@EnableAutoConfiguration+@ComponentScan
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,DataSourceTransactionManagerAutoConfiguration.class})
public class Application {

	public static void main(String[] args) {
		SpringApplication.run(Application.class,
args); } }

关于@SpringBootApplication注解的用法在注释中有说明

此时,项目的结构如图所示:

启动应用后访问http://localhost:8080/get

{"id":1,"username":"yangheng","password":"123"}

到此,基本的springboot框架就算搭建完成了。

 

 

推荐阅读