下面是"IDEA创建SpringBoot父子Module项目的实现"完整攻略,以及两个示例。
一、什么是SpringBoot
SpringBoot是基于Spring框架的一个快速开发脚手架,它简化了Spring应用的配置过程,提供了各种组件的自动化配置,在不需要过多配置的情况下,能够轻松地搭建一个基于Spring的Web应用程序。
二、什么是父子Module项目
父子模块是指项目中含有多个模块,其中一个模块为父模块,其他模块都为子模块,子模块中的内容可以继承和扩展父模块的内容,比如依赖管理、插件管理等。
三、IDEA创建SpringBoot父子Module项目的步骤
-
打开IntelliJ IDEA,选择"Create New Project",在弹出的新建项目窗口中选择"Spring Initializr",点击"Next"按钮。
-
在弹出的界面中依次填写项目的"Group"、"Artifact"、"packaging"、"Language"等信息,以及SpringBoot的基本配置信息。
-
点击"Next"按钮,进入"Dependencies"页面,勾选需要的依赖项,点击"Finish"按钮。
-
创建父模块:在项目中右键点击"Project",选择"New"->"Module",选择"Maven"作为项目类型,勾选"Create from archetype",选择"maven-archetype-quickstart"模板,点击"Next"按钮。
-
在弹出的界面中填写项目的"Group Id"、"Artifact Id"、"Version"、"Package"等信息,点击"Next"按钮。
-
在弹出的界面中选择"Project Name",选择自动生成的路径,点击"Finish"按钮,创建父模块。
-
创建子模块:在父模块中右键点击"Project",选择"New"->"Module",选择"Maven"作为项目类型,勾选"Create module from archetype",选择"maven-archetype-webapp"模板,点击"Next"按钮。
-
在弹出的界面中填写项目的"GroupId"、"Artifact Id"、"Version"、"Package"等信息,点击"Next"按钮。
-
在弹出的界面中选择"Project Name",选择自动生成的路径,点击"Finish"按钮,创建子模块。
-
在子模块的pom.xml文件中添加父模块的配置信息,将父模块的信息添加到子模块中:
<parent>
<groupId>com.example.parent</groupId>
<artifactId>parent</artifactId>
<version>1.0.0</version>
</parent>
- 在子模块的pom.xml文件中添加需要的依赖项,这些依赖项会继承父模块的依赖项:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
- 在子模块的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!";
}
}
- 在子模块的src/main/resources目录下创建application.properties文件,配置一些基本的SpringBoot参数:
server.port=8080
- 运行程序,可以看到在浏览器上输出"Hello, world!"。
至此,一个简单的SpringBoot项目就创建好了。
四、示例
下面我举两个简单的示例,详细讲解如何通过IntelliJ IDEA创建SpringBoot父子Module项目。
示例一:添加MySQL依赖
-
执行步骤1-6创建一个SpringBoot项目。
-
创建一个父模块,在父模块的pom.xml文件中添加下面的MySQL依赖:
<dependencies>
...
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
</dependencies>
- 创建一个子模块,使用父模块的配置,同时,在子模块的pom.xml文件中添加需要的依赖项:
<dependencies>
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
</dependencies>
- 在子模块的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;
}
}
- 在子模块的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> {
}
- 在子模块的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();
}
}
- 在子模块的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();
}
}
- 运行程序,在浏览器上打开http://localhost:8080/api/v1/users就可以看到数据库所有的用户。
示例二:添加Redis缓存
-
执行步骤1-6创建一个SpringBoot项目。
-
创建一个父模块,在父模块的pom.xml文件中添加下面的Redis依赖:
<dependencies>
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
</dependencies>
- 创建一个子模块,使用父模块的配置,同时,在子模块的pom.xml文件中添加需要的依赖项:
<dependencies>
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
</dependencies>
- 在子模块的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;
}
}
- 在子模块的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();
}
}
- 在子模块的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();
}
}
- 运行程序,第一次访问http://localhost:8080/api/v1/users时,会将数据存储在Redis缓存中,再次访问时会从缓存中读取。
总结
通过本文的讲解,我们可以看到如何使用IntelliJ IDEA创建SpringBoot父子Module项目,并且加入MySQL和Redis缓存两个功能。现在你可以通过这些示例,自己尝试添加更多的插件和功能,构建出更好的Web应用程序。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:IDEA创建SpringBoot父子Module项目的实现 - Python技术站