使用idea创建一个web的Gradle项目

1 生成基本的项目结构

1.1    使用Spring Initializr新建一个项目。

注意:这里Packaging要选war包,这个选项对自动生成的代码有影响,下面会说。

这里就算不勾选Web,由于之前选了打war包,也会生成web项目。

gradle推荐使用默认的,会自动下载,如果下载很慢的,那就选Use local gradle distribution,指定自己本地的gradle路径。

1.2 gradle文件配置

创建完项目后,可能在右下角会看到这个提示

表示gradle文件已改变,是否需要导入新的依赖,这里我们点Enable Auto-Import,这个选项的意思是只要你改动了build.gradle文件,就会自动刷新依赖

注意:下次重启Intellij可能会出现下图的提示

那就点Create Default Context,创建默认的Context

我们前面Packaging勾选war产生的效果就是 1.增加了apply plugin: 'war',war插件  2.providedRuntime('org.springframework.boot:spring-boot-starter-tomcat'),表示代码在运行时需要的依赖,providedRuntime是指依赖的Jar包不会被加到War包里面。

然后配置热部署,热部署是指一旦项目run起来,我们就不需要再次run了,只需要编译修改的文件或者编译整个工程,修改就会自动部署,这里还是用spring的springloaded。 

在buildscript的dependencies中加入: classpath 'org.springframework:springloaded:1.2.7.RELEASE'

之后代码有修改只需要编译修改了的代码(单个文件:菜单栏build/recompile….,多个就要在左边的Project中选中修改的文件,右键,rebuild,或者直接整个工程重新编译)就行了。

1.3 工程目录配置

工程目录中,基本配置其实都自动生成好了,自动生成的文件目录如下图所示:

这里有两个类,HexiApplication和ServletInitializer。

public class ServletInitializer extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(HexiApplication.class);
    }
}
@SpringBootApplication
public class HexiApplication {
    public static void main(String[] args) {
        SpringApplication.run(HexiApplication.class, args);
    }
}

Packaging勾选war还有一个效果就是会生成一个ServletInitializer。因为项目要部署到tomcat,启动类必须继承自SpringBootServletInitializer,主要起到web.xml的作用。  注意:这里我们解释下@SpringBootApplication @SpringBootApplication等价于@Configuration、@EnableAutoConfiguration、@ComponentScan,查看SpringBootApplication注解可以发现@ComponentScan并没有添加任何的参数,它会自动扫描工程里所有的@Component, @Service, @Repository, @Controller并把它们注册为Spring Beans。

其实现在一个最简单的springboot项目我们已经搭建完成了。什么?不相信?,你可以运行一下HexiApplication这个文件呀。会报你未配置dataSource,我们如下图所示进行一下配置即可完成一个最简单的springboot项目进行跑通 spring.datasource.url=jdbc:mysql://localhost:3306/maxrocky spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.jpa.database = mysql 账号密码当然你要配置成你自己的。OK 项目跑起来了。最简单的springboot项目搭建完成。 

2 控制器的编写

按如图所示包结构新建包和类。

HelloController

@RestController("/hello")
public class HelloController {

    private HelloWorld helloWorld;

    public HelloController(HelloWorld helloWorld) {
        this.helloWorld = helloWorld;
    }

    @GetMapping
    public String hello() {
        return helloWorld.hello();
    }
}

HelloWorld

@Component
public class HelloWorld {
    public String hello() {
        return "Hello World!";
    }
}

这里我们的HelloWorld或HelloController都没有@AutoWired注解(@Autowired注释可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过@Autowired的使用来消除set,get方法)。因为Spring的文档写到了如果只有一个构造函数,就可以省略这个注释。如果有多个,则要加上。 @RestController("/hello") public class HelloController {     private HelloWorld helloWorld;     @AutoWired     public HelloController(HelloWorld helloWorld) {         this.helloWorld = helloWorld;     }     ... }

@AutoWired会寻找和构造函数参数类型匹配的bean,把它们作为传入参数来创建HelloController。 @Component泛指组件,一般用于普通POJO,当组件不好归类的时候,也可以使用这个注解进行标注。  @Service用于标注业务层组件 @RestController用于标注控制层组件。@RestController同时包含了@Controller、@ResponseBody。 @GetMapping也是一个组合注解,相当于@RequestMapping(method = RequestMethod.GET)的缩写。 类似的还有@PostMapping、@PutMapping、@DeleteMapping。

3 运行应用

如图所示,打开右边的gradle,找到bootRun运行。跑起来后,下面的run工具窗口会一直显示在运行。此时打开浏览器,输入http://localhost:8080/hello,就可以看到Hello World!了。如果运行出错,则在Terminal工具窗口输入`./gradlew bootRun’看错误日志。

tomcat部署 之前提到过tomcat,但这个是可选的,如果你安装了tomcat,那如何在tomcat里调试呢? 点击菜单里的Run->EditConfigurations,在弹出的菜单的左上角点击加号,然后选择tomcat server->local,做如下图中的配置:

注意deployment标签内的设置

完成以后,就可以从tomcat中调试了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏精讲JAVA

Spring MVC 到底是如何工作的?

这篇文章将深入探讨Spring框架的一部分——Spring Web MVC的强大功能及其内部工作原理。

973
来自专栏运维前线

常用ansible命令

常用ansible命令 使用ansible-doc -l 查看具体模块的使用方法,这里举例常用的ansible简单用法 执行系统命令 [root@ansi...

2395
来自专栏大神带我来搬砖

spring boot中用注解进行服务器端参数校验

3877
来自专栏Android 研究

Android跨进程通信IPC之7——Binder相关结构体简介

binder_node 代表的是Binder实体对象,每一个service组件或者ServiceManager在Binder驱动程序中的描述,Binder驱动通...

1192
来自专栏冷冷

Spring 必知概念(一)

1、什么是Spring框架?Spring框架有哪些主要模块? Spring框架是一个为Java应用程序的开发提供了综合、广泛的基础性支持的Java平台。Spri...

2225
来自专栏java技术学习之道

SpringBoot开发详解 --Controller接收参数以及参数校验

3004
来自专栏进击的程序猿

第1章: Spring 基础第1章:Spring 基础

为了体验spring,所以建立的是一个 maven quick start 的项目,建立后的 pom.xml 配置如下:

1024
来自专栏一个会写诗的程序员的博客

《Spring Boot开发:从0到1》第13章 常见问题与解决方案

13.1 Spring MVC 关于controller的字符编码 13.2 Spring Boot启动报错 13.3 javax.servlet.Serv...

1112
来自专栏潇涧技术专栏

Art of Android Development Reading Notes 2

(1)任何一个操作系统都需要有相应的IPC机制,Linux上可以通过命名通道、共享内存、信号量等来进行进程间通信。 (2)Android系统不仅可以使用Bin...

932
来自专栏专注研发

IDEA环境下SSM整合------注解开发

3.别的好像没啥介绍了,基本步骤就这些,数据流程在上面,注解介绍在下面。 基本注解介绍 @Controller   负责注册一个控制器,Singlet...

3262

扫码关注云+社区

领取腾讯云代金券