IDEA创建SpringBoot父子Module项目的实现

下面是"IDEA创建SpringBoot父子Module项目的实现"完整攻略,以及两个示例。

一、什么是SpringBoot

SpringBoot是基于Spring框架的一个快速开发脚手架,它简化了Spring应用的配置过程,提供了各种组件的自动化配置,在不需要过多配置的情况下,能够轻松地搭建一个基于Spring的Web应用程序。

二、什么是父子Module项目

父子模块是指项目中含有多个模块,其中一个模块为父模块,其他模块都为子模块,子模块中的内容可以继承和扩展父模块的内容,比如依赖管理、插件管理等。

三、IDEA创建SpringBoot父子Module项目的步骤

  1. 打开IntelliJ IDEA,选择"Create New Project",在弹出的新建项目窗口中选择"Spring Initializr",点击"Next"按钮。

  2. 在弹出的界面中依次填写项目的"Group"、"Artifact"、"packaging"、"Language"等信息,以及SpringBoot的基本配置信息。

  3. 点击"Next"按钮,进入"Dependencies"页面,勾选需要的依赖项,点击"Finish"按钮。

  4. 创建父模块:在项目中右键点击"Project",选择"New"->"Module",选择"Maven"作为项目类型,勾选"Create from archetype",选择"maven-archetype-quickstart"模板,点击"Next"按钮。

  5. 在弹出的界面中填写项目的"Group Id"、"Artifact Id"、"Version"、"Package"等信息,点击"Next"按钮。

  6. 在弹出的界面中选择"Project Name",选择自动生成的路径,点击"Finish"按钮,创建父模块。

  7. 创建子模块:在父模块中右键点击"Project",选择"New"->"Module",选择"Maven"作为项目类型,勾选"Create module from archetype",选择"maven-archetype-webapp"模板,点击"Next"按钮。

  8. 在弹出的界面中填写项目的"GroupId"、"Artifact Id"、"Version"、"Package"等信息,点击"Next"按钮。

  9. 在弹出的界面中选择"Project Name",选择自动生成的路径,点击"Finish"按钮,创建子模块。

  10. 在子模块的pom.xml文件中添加父模块的配置信息,将父模块的信息添加到子模块中:

<parent>
    <groupId>com.example.parent</groupId>
    <artifactId>parent</artifactId>
    <version>1.0.0</version>
</parent>
  1. 在子模块的pom.xml文件中添加需要的依赖项,这些依赖项会继承父模块的依赖项:
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
  1. 在子模块的src/main/java目录下创建SpringBoot的启动类,这里以简单的"Hello World"应用程序为例:
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class Application {

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

    @GetMapping("/")
    public String hello() {
        return "Hello, world!";
    }

}
  1. 在子模块的src/main/resources目录下创建application.properties文件,配置一些基本的SpringBoot参数:
server.port=8080
  1. 运行程序,可以看到在浏览器上输出"Hello, world!"。

至此,一个简单的SpringBoot项目就创建好了。

四、示例

下面我举两个简单的示例,详细讲解如何通过IntelliJ IDEA创建SpringBoot父子Module项目。

示例一:添加MySQL依赖

  1. 执行步骤1-6创建一个SpringBoot项目。

  2. 创建一个父模块,在父模块的pom.xml文件中添加下面的MySQL依赖:

<dependencies>
    ...
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.27</version>
    </dependency>
</dependencies>
  1. 创建一个子模块,使用父模块的配置,同时,在子模块的pom.xml文件中添加需要的依赖项:
<dependencies>
    ...
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
</dependencies>
  1. 在子模块的src/main/java目录下创建数据模型:
package com.example.demo.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    private Integer age;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}
  1. 在子模块的src/main/java目录下创建数据仓库:
package com.example.demo.repository;

import com.example.demo.model.User;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface UserRepository extends CrudRepository<User, Long> {
}
  1. 在子模块的src/main/java目录下创建数据服务:
package com.example.demo.service;

import com.example.demo.model.User;
import com.example.demo.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    public User addUser(User user) {
        return userRepository.save(user);
    }

    public Iterable<User> findAllUsers() {
        return userRepository.findAll();
    }
}
  1. 在子模块的src/main/java目录下创建控制器:
package com.example.demo.controller;

import com.example.demo.model.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/v1")
public class UserController {

    @Autowired
    private UserService userService;

    @PostMapping("/users")
    public User addUser(@RequestBody User user) {
        return userService.addUser(user);
    }

    @GetMapping("/users")
    public Iterable<User> findAllUsers() {
        return userService.findAllUsers();
    }
}
  1. 运行程序,在浏览器上打开http://localhost:8080/api/v1/users就可以看到数据库所有的用户。

示例二:添加Redis缓存

  1. 执行步骤1-6创建一个SpringBoot项目。

  2. 创建一个父模块,在父模块的pom.xml文件中添加下面的Redis依赖:

<dependencies>
    ...
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
</dependencies>
  1. 创建一个子模块,使用父模块的配置,同时,在子模块的pom.xml文件中添加需要的依赖项:
<dependencies>
    ...
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-cache</artifactId>
    </dependency>
</dependencies>
  1. 在子模块的src/main/java目录下创建Redis配置:
package com.example.demo.config;

import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializationContext;
import org.springframework.data.redis.serializer.StringRedisSerializer;

import java.time.Duration;

@Configuration
@EnableCaching
public class RedisConfig {

    @Bean
    public CacheManager cacheManager(RedisConnectionFactory connectionFactory) {
        ClassLoader cl = this.getClass().getClassLoader();
        RedisSerializationContext.SerializationPair<Object> jsonSerializer = RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer(cl));
        RedisCacheConfiguration bankKeysCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig().serializeValuesWith(jsonSerializer);
        RedisCacheManager cacheManager = RedisCacheManager.builder(connectionFactory).cacheDefaults(bankKeysCacheConfiguration).build();
        return cacheManager;
    }
}
  1. 在子模块的src/main/java目录下创建数据服务:
package com.example.demo.service;

import com.example.demo.model.User;
import com.example.demo.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

@Service
@CacheConfig(cacheNames = "users")
public class UserService {

    @Autowired
    private UserRepository userRepository;

    @Cacheable
    public Iterable<User> findAllUsers() {
        return userRepository.findAll();
    }
}
  1. 在子模块的src/main/java目录下创建控制器:
package com.example.demo.controller;

import com.example.demo.model.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api/v1")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/users")
    public Iterable<User> findAllUsers() {
        return userService.findAllUsers();
    }
}
  1. 运行程序,第一次访问http://localhost:8080/api/v1/users时,会将数据存储在Redis缓存中,再次访问时会从缓存中读取。

总结

通过本文的讲解,我们可以看到如何使用IntelliJ IDEA创建SpringBoot父子Module项目,并且加入MySQL和Redis缓存两个功能。现在你可以通过这些示例,自己尝试添加更多的插件和功能,构建出更好的Web应用程序。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:IDEA创建SpringBoot父子Module项目的实现 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • servlet中session简介和使用例子

    Servlet中Session简介和使用例子 在Web开发中,由于HTTP协议限制,服务器不会保存客户端的状态信息,因此需要一种机制来实现在一个会话期间内对客户端状态信息的保存和共享。这个机制就是Session。 Session简介 Session,它是基于一个用户会话机制的,一旦打开Session,就对站点所有页面的访问都有效。Session是在服务器端保…

    Java 2023年6月15日
    00
  • java删除数组中的某一个元素的方法

    下面提供详细的“Java删除数组中的某一个元素的方法”的攻略。 1. 使用System.arraycopy方法删除数组中的元素 System.arraycopy方法能够在保持原数组中其他元素未变的前提下,将需要删除的元素移除,从而实现删除数组中某一元素的目的。 下面是该方式的代码示例: public static void main(String[] arg…

    Java 2023年5月26日
    00
  • 使用maven如何将项目中的test代码打包进jar中

    使用 Maven 将项目中的 test 代码打包进 jar 中,可以实现在发布项目时一并发布 test 代码,方便其他人也能进行测试。下面是具体的步骤: 在 pom.xml 文件中添加以下代码,指定将 test 代码打包进 jar 中: <build> <plugins> <plugin> <groupId>o…

    Java 2023年5月20日
    00
  • Java throw Exception实现异常转换

    Java中的异常处理机制是一项重要的特性。在编写Java程序时,如果由于某些原因导致程序无法正常执行,就会抛出异常。异常分为已检查异常(checked exception)和未检查异常(unchecked exception)。已检查异常在编译期便会被检查出来,程序必须给出异常处理代码;未检查异常则不需要必须捕获和处理,但是可以选择性的进行。 有时候,我们需…

    Java 2023年5月27日
    00
  • tomcat部署java web项目遇到的问题及解决方法

    Tomcat部署Java Web项目遇到的问题及解决方法 Tomcat是非常常用的Java Web服务器,但在部署Java Web项目时,也经常会遇到一些问题。本篇攻略将讲解一些可能遇到的问题及解决方法,希望对大家有所帮助。 问题一:Tomcat启动出错,指定端口已被占用 在启动Tomcat时,可能会遇到指定的端口已被占用的情况。这时候,需要找到占用该端口的…

    Java 2023年6月2日
    00
  • 详细讲解Java中的main()方法

    详细讲解Java中的main()方法 什么是main()方法 在Java中,每个可执行程序都必须包含一个名为 main 的方法。main 方法是程序的入口点,是Java程序启动时执行的第一个方法。在Java中,main 方法被定义为 public static void main(String[] args)。这表示 main 方法是公共的(可以从任何地方访…

    Java 2023年5月23日
    00
  • 新浪java面试经历与感慨分享

    新浪Java面试经历与感慨分享 背景介绍 该经历来自一位Java开发者在新浪公司的面试经历,分享该经历希望能够帮助其他准备面试的开发者,提高他们的面试成功率。 面试前准备 为了顺利通过面试,个人认为主要需要做好以下几个准备: 1. 掌握基础知识 在面试中,基础知识是最重要的。需要熟悉Java核心技术,如集合、IO流等,在掌握基本语法的基础上,对Java底层原…

    Java 2023年5月26日
    00
  • Java使用Log4j记录日志的方法详解

    Java使用Log4j记录日志的方法详解 日志是一个软件项目中非常重要的组成部分,可以帮助开发者追踪、定位问题,监控应用程序的运行状态,为软件项目提供实时数据和错误信息。在Java开发中,常用的日志框架有java.util.logging、logback、Log4j等,其中Log4j是最流行和广泛使用的日志框架之一。本文将针对Java程序员讲解如何使用Log…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部