GVKun编程网logo

利用 create-spring-boot-app 快速创建 Spring Boot 应用(如何创建spring boot项目)

1

在本文中,您将会了解到关于利用create-spring-boot-app快速创建SpringBoot应用的新资讯,同时我们还将为您解释如何创建springboot项目的相关在本文中,我们将带你探索利

在本文中,您将会了解到关于利用 create-spring-boot-app 快速创建 Spring Boot 应用的新资讯,同时我们还将为您解释如何创建spring boot项目的相关在本文中,我们将带你探索利用 create-spring-boot-app 快速创建 Spring Boot 应用的奥秘,分析如何创建spring boot项目的特点,并给出一些关于503 服务不可用 - GET https://registry.npmjs.com/create-create-app - 服务不可用、ActionController :: RoutingError没有路由与[GET]“ / vendor / assets / stylesheets / bootstrap.min.css”匹配 app / assets / stylesheets / application.css: app / assets / javascript / application.js: app / views / layout / application.html.erb: app / j、angular – ng new hello错误:路径“/app/app.module.ts”不存在.路径“/app/app.module.ts”不存在、App\Http\Controllers\Auth\RegisterController::create(array $data) 的声明必须与 App\Http\Controllers\Controller::create()的实用技巧。

本文目录一览:

利用 create-spring-boot-app 快速创建 Spring Boot 应用(如何创建spring boot项目)

利用 create-spring-boot-app 快速创建 Spring Boot 应用(如何创建spring boot项目)

利用 create-spring-boot-app 快速创建 Spring Boot 应用 从属于笔者的 服务端应用程序开发与系统架构。最近一段时间我司业务快速扩展,针对不同的项目分割了很多代码库,为了方便新同事学习与快速使用 Spring Boot 项目,顺手将之前的模板整合为 create-spring-boot-app,跟笔者之前的 create-react-boilerplate 都是属于脚手架系列。
更多编程语言、服务端开发方面的知识图谱参考 2016: 我的技术体系结构图、探究高可用服务端架构的优秀资料索引、追求技术之上的进阶阅读学习索引 、 机器学习、深度学习与自然语言处理领域推荐的书籍列表。

利用 create-spring-boot-app 快速创建 Spring Boot 应用

如果你尚未安装 Node.js 环境,推荐使用 nvm 安装 Node.js 基本环境。如果你尚未安装 Java 或者 Gradle,推荐使用 sdkman 安装 Java/Gradle。基本环境安装完毕之后可以使用 npm 安装脚手架:

npm install create-spring-boot-app -g

安装完毕后,可以查看常用命令:

➜  ~ create-spring-boot-app -h

  Usage: create-spring-boot-app <project-name> [options]

  Options:

    -h, --help               output usage information
    -V, --version            output the version number
    -p, --package [package]  选择包名(默认 wx.csba)
    -t, --type [type]        选择模板类型 [gradle/maven]
    -a, --addon [addon]      选择所需要的扩展,多个以逗号隔开 [all/weixin]

    仅 <project-name> 是必须参数!

我们现在可以使用 create-spring-boot-app 直接创建新的 Spring Boot 项目:

➜  ~ create-spring-boot-app testtest -p com.test
开始创建新的 Spring Boot 应用位于文件夹 /Users/apple/testtest
初始化 testtest 基于 gradle-boilerplate
开始抓取远端模板 https://github.com/wxyyxc1992/create-spring-boot-app
将包名更为:com.test
应用创建完毕

使用 cd testtest 进入项目文件夹
使用 gradle :help 查看可用命令

进入到项目目录下,我们可以查看可用命令:

➜  testtest gradle :help
Starting a Gradle Daemon, 25 stopped Daemons could not be reused, use --status for details
:help
使用 gradle :bootRun 运行 Spring Boot 项目(这里的 : 表示从根模块开始运行)
使用 gradle :build 打包 Jar
使用 gradle task 查看所有任务

BUILD SUCCESSFUL

Total time: 3.966 secs

然后使用 gradle :bootRun 命令启动服务器,然后打开 localhost:8081 即可查看基本的访问返回。为了保证应用具有热加载功能,我们使用 Spring Loaded 插件:

buildscript {
    repositories { jcenter() }
    dependencies {
        classpath "org.springframework.boot:spring-boot-gradle-plugin:1.5.2.RELEASE"
        classpath ''org.springframework:springloaded:1.2.6.RELEASE''
    }
}

apply plugin: ''idea''

idea {
    module {
        inheritOutputDirs = false
        outputDir = file("$buildDir/classes/main/")
    }
}

// ...

该插件在笔者的 Java 8u121 版本中是会报异常,正在尝试解决中。

目录结构

- spring-boot-app
    - src
        - application
    - module
        - api    
            - controller
            - logic
            - graphql
        - shared
            - entity
            - util
        - model
            - rds
            - kv
        - service
    - addon
        - weixin

各个模块之间独立可测试,模块间尽量显式依赖;不过这些模块并非强制分组,对于初期应用也可以选择不进行分模块,全部代码写在根应用中。模块之间的依赖关系如下:

共享模块

实体类

实体类推荐使用 Lombok 进行实时封装。Lombok主要依赖编译时代码生成技术,帮你自动生成基于模板的常用的 Java 代码,譬如最常见的 Getter 与 Setter 。之前动态的插入 Getter 与 Setter 主要有两种,一个是像 Intellij 与 Eclipse 这样在开发时动态插入,缺点是这样虽然不用你手动写,但是还是会让你的代码异常的冗长。另一种是通过类似于 Spring 这样基于注解的在运行时利用反射动态添加,不过这样的缺陷是会影响性能,并且有一定局限性。笔者目前用的开发环境是 Intellij+Gradle,这里只介绍下这种搭建方式,其他的基于 Eclipse 或者 Maven 的可以到官网主页查看。
(1)在 Intellij 中添加 Plugin

  • Go to File > Settings > Plugins

  • Click on Browse repositories...

  • Search for Lombok Plugin

  • Click on Install plugin

  • Restart Android Studio

(2)允许注解处理

  • Settings -> Compiler -> Annotation Processors

(3)Gradle中添加依赖(默认已经添加)

compile "org.projectlombok:lombok:1.12.6"

数据接口

接口风格

接口推荐使用 RESTful 与 ActionBased 风格的接口,对于复杂查询可以考虑使用 GraphQL 风格的查询语言进行二次封装。不过在应用服务器本身应该尽可能地提供原子化的接口,特别是在快速迭代的产品开发中,在需求稳定之前后台应该尽可能地提供细粒度的接口让前端自由封装。可以参考 来自于PayPal的RESTful API标准、Google API Design Guide 等。

逻辑与副作用分离

笔者特意设置了 logic 包,应将业务逻辑抽象为纯函数的方式放置到 logic 包中,方便测试与复用。

数据持久化

项目中计划使用 Mybatis 作为半自动的数据持久化工具,使用 Mybatis Generator 作为代码自动生成工具。

微服务

HTTPS 与负载均衡

推荐是所有的对外开放的接口全部使用 HTTPS 连接,但是不建议直接在应用服务器上添加 HTTPS 证书和支持;可以使用 Nginx/Caddy 这样的 Web 服务器进行反向代理与负载均衡操作,更多信息参考 清新脱俗的 Web 服务器 Caddy 、Nginx 基本配置备忘。

服务状态监听

项目中使用了 actuator-service 监听服务运行状态,需要在依赖中添加 compile("org.springframework.boot:spring-boot-starter-actuator"),然后在配置文件中指定监听地址:

management.port=8082
management.address=127.0.0.1

在应用启动后,访问 /health 即可以获取到系统当前信息:

{
    status: "UP",
    diskSpace: {
        status: "UP",
        total: 249804890112,
        free: 27797606400,
        threshold: 10485760
        }
}

测试

单元测试

单元测试的目标是某个单独类或者函数的功能,应该尽可能地通过 Mock 等技术隔离测试环境,譬如我们要测试某个接口:

@RunWith(SpringRunner.class)
@WebMvcTest(IndexController.class)
public class IndexControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @Test
    public void greetingShouldReturnMessageFromService() throws Exception {
        this.mockMvc.perform(get("/")).andDo(print()).andExpect(status().isOk())
                .andExpect(content().string(containsString("Hello Mock")));
    }

}

集成测试

在集成测试中我们需要尽量模拟真实环境,测试多个模块间的互动;譬如在单元测试中我们会 Mock 数据库连接、外部服务等,但是在集成测试中我们的测试目标仍然是单元功能点,但是会测试其在真实环境下的多模块耦合的功能表现。

端到端测试

端到端测试相对而言属于黑盒测试,我们往往对部署在生产环境下的应用服务测试其可用性与逻辑准确性。

扩展

/addon 目录下存放的是某些可复用的业务扩展代码,典型的譬如微信后台,包括微信登录、微信支付等常用功能;开发者可以使用 -a 选项来选择初始化时需要的扩展模板,默认是全部扩展都会被添加进来。

  • 微信:我的微信SDK,包括公众平台管理、微信支付等各个版本。老实说,微信的文档并不是很友好,坑不少啊~~ 笔者在这里准备的算是半自动化的。参考 这里 查看具体的功能描述与代码说明

Roadmap

笔者拟计划未来添加以下特性:

  • 继续完成常用功能

  • 类似于 Rails 的代码自动生成

  • 嵌入的常见 Java 调试工具

欢迎大家提出建议、需求与 PR

503 服务不可用 - GET https://registry.npmjs.com/create-create-app - 服务不可用

503 服务不可用 - GET https://registry.npmjs.com/create-create-app - 服务不可用

如何解决503 服务不可用 - GET https://registry.npmjs.com/create-create-app - 服务不可用

npx 创建-创建-应用测试 npm 错误!代码 E503 npm 错误! 503 服务不可用 - GET https://registry.npmjs.com/create-create-app - 服务不可用

npm 错误!可以在以下位置找到此运行的完整日志: npm 错误! /home/baylood/.npm/_logs/2021-02-21T08_55_00_416Z-debug.lo

ActionController :: RoutingError没有路由与[GET]“ / vendor / assets / stylesheets / bootstrap.min.css”匹配 app / assets / stylesheets / application.css: app / assets / javascript / application.js: app / views / layout / application.html.erb: app / j

ActionController :: RoutingError没有路由与[GET]“ / vendor / assets / stylesheets / bootstrap.min.css”匹配 app / assets / stylesheets / application.css: app / assets / javascript / application.js: app / views / layout / application.html.erb: app / j

如何解决ActionController :: RoutingError没有路由与[GET]“ / vendor / assets / stylesheets / bootstrap.min.css”匹配 app / assets / stylesheets / application.css: app / assets / javascript / application.js: app / views / layout / application.html.erb: app / j

我正在Rails上执行此应用程序,页面加载正常,但在控制台中显示:

Started GET "/vendor/assets/stylesheets/bootstrap.min.css" for ::1 at 2020-08-17 09:09:51 -0500

Started GET "/vendor/assets/javascripts/bootstrap.min.js" for ::1 at 2020-08-17 09:09:51 -0500
ActionController::RoutingError (No route matches [GET] 
"/vendor/assets/stylesheets/bootstrap.min.css"):
ActionController::RoutingError (No route matches [GET] 
"/vendor/assets/javascripts/bootstrap.min.js"):

在我的供应商文件夹中,我同时拥有文件夹,javascript和样式表,并分别位于各自的bootsrtrap.min中。 即使在application.html.erb中,我也有以下内容:

  <link href="vendor/assets/stylesheets/bootstrap.min.css" rel="stylesheet">
  <%= csrf_Meta_tags %>
  <%= stylesheet_link_tag    ''application'',media: ''all'',''data-turbolinks-track'': ''reload'' %>
  <%= javascript_include_tag ''application'',''data-turbolinks-track'': ''reload'' %>

</head>
<body>

  <!-- Navigation -->
  <nav>
    <div>
      <ahref="#">Instagram Clone</a>
      <buttontype="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
        <span></span>
      </button>
      <divid="navbarResponsive">
        <ul>
          <li>
            <ahref="#">Home
              <span>(current)</span>
            </a>
          </li>
          <li>
            <ahref="#">About</a>
          </li>
          <li>
            <ahref="#">Services</a>
          </li>
          <li>
            <ahref="#">Contact</a>
          </li>
        </ul>
      </div>
    </div>
  </nav>

  <!-- Page Content -->
  <div>
    <div>
      <div>
        <%= yield %>
      </div>
    </div>
  </div>

  <!-- Bootstrap core JavaScript -->
  <!--<script src="vendor/jquery/jquery.slim.min.js"></script>-->
  <script src="vendor/assets/javascripts/bootstrap.min.js"></script>
    
</body>
</html>

在js和CSS这两个应用程序文件中,我都放置了“ require bootsrtrap.min”,即使该错误仍然出现在控制台中。 会是什么?

解决方法

RoR不使用目录作为文件夹结构指示。因为有资产装载者。您应该将5s或更少的css导入application.css中,并将js导入application.js中。并使用自己的助手添加捆绑文件:

1。用纱安装靴子

yarn add bootstrap @popperjs/core jquery

npm i bootstrap @popperjs/core jquery

栏位不超过5

2。在Assets Pipeline中导入文件

app / assets / stylesheets / application.css:

//...
require bootstrap/dist/css/bootstrap.min
//...

但是,如果需要,我建议使用SCSS并仅导入所需的样式。

app / assets / javascript / application.js:

//...
//= require jquery
//= require @popperjs/core
//= require bootstrap/dist/js/bootstrap.min
//...

3。在布局中导入资产

app / views / layout / application.html.erb:

<head>
...
  <%= stylesheet_link_tag ''application'',media: ''all'' %>
</head>
<body>
...
  <%= javascript_include_tag ''application'' %>
</body>

使用webpack滚动6

2。在application.scss和application.js中导入Bootstrap

app / javascript / stylesheets / application.scss:

//...
import ''bootstrap''
//...

app / javascript / packs / application.js:

import ''jquery''
import ''popper.js''
import ''bootstrap''
import ''../stylesheets/application''

3。在布局中导入捆绑包

<head>
...
  <%= stylesheet_pack_tag ''application'',media: ''all'',''data-turbolinks-track'': ''reload'' %>
  <%= javascript_pack_tag ''application'',''data-turbolinks-track'': ''reload'' %>
</head>

之后,您应该可以在所有应用程序中使用引导程序!

,

[解决方案]因此,在我的HTML(application.html.erb)内部,我有两个对js和css文件的调用:

<script src="assets/javascripts/bootstrap.min.js"></script>
  <%= javascript_include_tag ''application'',''data-turbolinks-track'': ''reload'' %>       
<link href="assets/stylesheets/bootstrap.min.css" rel="stylesheet">
  <%= csrf_meta_tags %>
  <%= stylesheet_link_tag    ''application'',''data-turbolinks-track'': 
  ''reload'' %>

正如您在上面看到的那样,在使用javascript的情况下,我有一个使用脚本的调用,而另一个使用了的调用,两者都造成了问题,所以您只需要评论一个,我就对该脚本进行评论对于我的java文件和CSS文件,一个。 像这样:

  <!--<link href="assets/stylesheets/bootstrap.min.css" rel="stylesheet">-->
    <!--<script src="assets/javascripts/bootstrap.min.js"></script>-->

对我来说,解决了这个问题,我真的尝试了所有事情,这就是解决方案哈哈。

angular – ng new hello错误:路径“/app/app.module.ts”不存在.路径“/app/app.module.ts”不存在

angular – ng new hello错误:路径“/app/app.module.ts”不存在.路径“/app/app.module.ts”不存在

我在角度创建新项目时面临问题.
当我运行新的myapp命令时,我得到以下命令

新的你好

Error: Path "/app/app.module.ts" does not exist.
Path "/app/app.module.ts" does not exist.

谁能帮我吗???

解决方法

这是解决方案

Please make sure that your new folder have write permission

如果您使用的是ubuntu,请将以下命令运行到该文件夹

sudo chmod 644 -R foldername

然后运行新的appname

并检查您的节点版本

App\Http\Controllers\Auth\RegisterController::create(array $data) 的声明必须与 App\Http\Controllers\Controller::create()

App\Http\Controllers\Auth\RegisterController::create(array $data) 的声明必须与 App\Http\Controllers\Controller::create()

如何解决App\\Http\\Controllers\\Auth\\RegisterController::create(array $data) 的声明必须与 App\\Http\\Controllers\\Controller::create()

我有一个错误声明 App\\Http\\Controllers\\Auth\\RegisterController::create(array $data) must be compatible with App\\Http\\Controllers\\Controller::create() 我该怎么办?方法 ''App\\Http\\Controllers\\Auth\\RegisterController::createtwo()'' 与方法 ''App\\Http\\Controllers\\Controller::createtwo()''.intelephense(1038) 不兼容

  1. <?PHP
  2. namespace App\\Http\\Controllers\\Auth;
  3. use App\\Http\\Controllers\\Controller;
  4. use App\\Models\\User;
  5. use Illuminate\\Foundation\\Auth\\RegistersUsers;
  6. use Illuminate\\Support\\Facades\\Validator;
  7. class RegisterController extends Controller
  8. {
  9. /*
  10. |--------------------------------------------------------------------------
  11. | Register Controller
  12. |--------------------------------------------------------------------------
  13. |
  14. | This controller handles the registration of new users as well as their
  15. | validation and creation. By default this controller uses a trait to
  16. | provide this functionality without requiring any additional code.
  17. |
  18. */
  19. use RegistersUsers;
  20. /**
  21. * Where to redirect users after registration.
  22. *
  23. * @var string
  24. */
  25. //protected $redirectTo = RouteServiceProvider::HOME;
  26. /**
  27. * Create a new controller instance.
  28. *
  29. * @return void
  30. */
  31. public function __construct()
  32. {
  33. $this->middleware(''guest'');
  34. }
  35. /**
  36. * Get a validator for an incoming registration request.
  37. *
  38. * @param array $data
  39. * @return \\Illuminate\\Contracts\\Validation\\Validator
  40. */
  41. protected function validator(array $data)
  42. {
  43. return Validator::make($data,[
  44. ''name'' => ''required|string|max:255'',''username'' => ''required|string|max:191|unique:users'',''email'' => ''required|string|email|max:191|unique:users'',''password'' => ''required|string|min:6|confirmed'',]);
  45. }
  46. /**
  47. * Create a new user instance after a valid registration.
  48. *
  49. * @param array $data
  50. * @return \\App\\Models\\User
  51. */
  52. public function createtwo(array $data)
  53. {
  54. return User::create([
  55. ''name'' => $data[''name''],''username'' => $data[''username''],''email'' => $data[''email''],''password'' => bcrypt($data[''password'']),]);
  56. }
  57. }

控制器.PHP

  1. <?PHP
  2. namespace App\\Http\\Controllers;
  3. use Illuminate\\Foundation\\Auth\\Access\\AuthorizesRequests;
  4. use Illuminate\\Foundation\\Bus\\dispatchesJobs;
  5. use Illuminate\\Foundation\\Validation\\ValidatesRequests;
  6. use Illuminate\\Routing\\Controller as BaseController;
  7. class Controller extends BaseController
  8. {
  9. use AuthorizesRequests,dispatchesJobs,ValidatesRequests;
  10. /**
  11. * Show the form for creating a new resource.
  12. *
  13. * @return \\Illuminate\\Http\\Response
  14. */
  15. public function create()
  16. {
  17. return view(''products.create'');
  18. }
  19. public function createtwo()
  20. {
  21. return view(''users.create'');
  22. }
  23. }

解决方法

这是一个 php OOP(面向对象编程)错误。 PHP 只是告诉您两个 createtwo() 方法(“Controller”类之一和“RegisterController”类之一)不兼容,因为您的父 createtwo() 方法(“Controller”类之一)没有(数组)$data 参数。两种方法必须具有相同的声明(原型)。

今天关于利用 create-spring-boot-app 快速创建 Spring Boot 应用如何创建spring boot项目的讲解已经结束,谢谢您的阅读,如果想了解更多关于503 服务不可用 - GET https://registry.npmjs.com/create-create-app - 服务不可用、ActionController :: RoutingError没有路由与[GET]“ / vendor / assets / stylesheets / bootstrap.min.css”匹配 app / assets / stylesheets / application.css: app / assets / javascript / application.js: app / views / layout / application.html.erb: app / j、angular – ng new hello错误:路径“/app/app.module.ts”不存在.路径“/app/app.module.ts”不存在、App\Http\Controllers\Auth\RegisterController::create(array $data) 的声明必须与 App\Http\Controllers\Controller::create()的相关知识,请在本站搜索。

本文标签:

上一篇前端每周清单:jQuery 3.2发布,滴滴采用Vue 2.0重构Web App、饿了么 PWA 实践经验分享

下一篇前端周刊第48期:Vue Conf 2017 + Progressive WEB APP(前端的vue)