创建Spring Initialize工程
初始化内容
README.md
README中可以添加这个项目的介绍,它将显示在github/gitlab/gitee等仓库托管中项目介绍的首页。
.gitignore
gitignore是git仓库,你可以将不需要提交到代码仓库的文件添加到这个文件(比如程序编译后生成的运行目录target等),默认如下
pom.xml
在Maven包管理pom.xml中添加依赖包!
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.22.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>springboot_demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot_demo</name>
<description>springboot_demo</description>
<properties>
<java.version>21</java.version>
</properties>
<dependencies>
<!-- 添加依赖包:支持 Web 应用开发,包含 Tomcat 和 spring-mvc。-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starte-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
编写代码
@SpringBootApplication
@RestController
public class SpringbootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootDemoApplication.class, args);
}
/**
* hello world.
*
* @return hello
*/
@GetMapping("/hello")
public ResponseEntity<String> hello() {
return new ResponseEntity<>("hello world", HttpStatus.OK);
}
}
启动问题
- java: 错误: 无效的源发行版:16
解决办法:bug——java: 错误: 无效的源发行版:16
运行程序
http://localhost:8080/hello
执行结果
经典的MVC三层架构
定义
三层架构(3-tier application) 将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。
- 表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
- 业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
- 数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。
区分层次的目的即为了“高内聚,低耦合”的思想。
用Package解耦三层结构
Controller
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("add")
public User add(User user) {
userService.addUser(user);
return user;
}
@GetMapping("list")
public List<User> list() {
return userService.list();
}
}
Dao
@Repository
public class UserDao {
private List<User> userDemoList = new ArrayList<>();
public void save(User user) {
userDemoList.add(user);
}
public List<User> findAll() {
return userDemoList;
}
}
Entity
public class User {
private String userId;
private String userName;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
Service
public interface UserService {
void addUser(User user) ;
List<User> list();
}
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public void addUser(User user) {
userDao.save(user);
}
@Override
public List<User> list() {
return userDao.findAll();
}
}
运行程序
http://localhost:8080/user/add?userId=1&userName=admin