Maven是最流行的Java项目构建工具
为什么需要使用Maven?
在JavaWeb开发中Maven能够帮我们自动管理jar包、自动构建项目。
1.1 安装Maven
1.2 配置环境变量
在系统的Path中配置 %MAVEN_HOME%\bin
打开DOS窗口输入mvn -v命令,查看版本。当出现下面信息就说明Maven安装成功了
1.3 配置镜像
alimaven
central
aliyun maven
http://maven.aliyun.com/nexus/content/groups/public/
1.4 配置本地仓库
本地仓库用于存放从服务器下载的jar包
D:/JavaTools/Maven/apache-maven-3.6.1/repository
1.5 Maven集成IDEA
idea中有一个自带的maven。 我们要让idea使用自己安装的maven。
选择File-->Settings-->Build,Execution,Deployment-->Maven
2.选择File-->Settings-->Build,Execution,Deployment-->Maven-->Runner
-DarchetypeCatalog=internal
3.选择File---> Other Settings---> Settings for New Projects
窗前其他的工程Maven配置也跟之前一样
目标:向web浏览器输出HelloSpringBoot
步骤如下:
4.0.0
com.shouyi
shouyixueyuan-springboot-water
1.0-SNAPSHOT
shouyixueyuan-springboot-water-demo-01
pom
UTF-8
1.8
1.8
2.3.0.RELEASE
5.1.47
1.1.23
3.3.2
1.18.20
1.7.26
1.7.26
1.8.0
1.2.17
5.1.0
2.9.2
org.springframework.boot
spring-boot-dependencies
${springboot.version}
import
pom
mysql
mysql-connector-java
${mysql.version}
com.baomidou
mybatis-plus-boot-starter
${mybatisplus.version}
com.alibaba
druid-spring-boot-starter
${druid.version}
cn.hutool
hutool-all
${hutool.version}
org.projectlombok
lombok
provided
${lombok.version}
true
io.springfox
springfox-swagger2
${swagger.version}
io.springfox
springfox-swagger-ui
${swagger.version}
org.junit.platform
junit-platform-launcher
${junit.version}
test
org.junit.platform
junit-platform-commons
${junit.version}
test
log4j
log4j
${log4j.version}
org.slf4j
jcl-over-slf4j
${jcl-over.version}
org.slf4j
slf4j-log4j12
${slf4j.version}
src/main/java
**/*.properties
**/*.xml
false
${project.basedir}/src/main/resources
**/*.java
org.springframework.boot
spring-boot-maven-plugin
minzu-springboot
com.minzu
1.0-SNAPSHOT
4.0.0
minzu-springboot-demo-01
org.springframework.boot
spring-boot-starter-web
ch.qos.logback
*
org.apache.logging.log4j
*
org.springframework.boot
spring-boot-starter-actuator
org.springframework.boot
spring-boot-devtools
runtime
true
org.springframework.boot
spring-boot-starter-log4j
1.3.8.RELEASE
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
mysql
mysql-connector-java
org.projectlombok
lombok
io.springfox
springfox-swagger2
io.springfox
springfox-swagger-ui
cn.hutool
hutool-all
log4j
log4j
org.slf4j
jcl-over-slf4j
org.junit.platform
junit-platform-launcher
org.junit.platform
junit-platform-commons
application.yml
.yml是一种特殊的配置文件,也是Springboot的配置文件
2.5.1 YML是什么
YAML (Ain't a Markup Language)YAML不是一种标记语言,通常以.yml为后缀的文件,是一种直观的能够被电脑识别的数据序列化格式,并且容易被人类阅读,一种专门用来写配置文件的语言。可用于如: Java,C/C++, Ruby, Python, Perl, C#, PHP等。
2.5.2 YML优点
YAML易于人们阅读。
YAML数据在编程语言之间是可移植的。
YAML具有表现力和可扩展性。
YAML易于实现和使用。
2.5.3 YML语法
k: v 表示键值对关系,冒号后面必须有一个空格
大小写敏感
缩进时不允许使用Tab键,只允许使用空格。
# 微服务应用程序端口号
server:
port: 8081
2.6 编写日志配置文件
在resources目录下定义日志配置文件log4j.properties,配置项如下:
# 将日志级别为DEBUG的日志信息输出到file(文件)和console(控制台)这两个目的地
log4j.rootLogger=INFO, file, console
# 文件输出的相关设置
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./log/System.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
#控制台输出的相关设置
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss SSS} %5p %c{1}:%L - %m%n
#日志输出级别
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
2.7编写控制器Controller
/**
* TODO
*
* @author caojie
* @version 1.0
* 被@RestController注解修饰的类在程序启动的时候会注入到SpringBoot容器中,表示这个类充当Controller(控制器),它
* 里面定义的方法全部以Json字符串的形式返回给浏览器
*/
@RestController
public class HelloController {
/**
* @GetMapping将HTTP GET请求映射到特定的方法。例如:将浏览器的/hello请求映射到hello()方法
* @return
*/
@GetMapping("/hello")
public String hello() {
return "Hello SpringBoot";
}
}
2.8编写SpringBoot启动类
package com.wenhua.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* TODO
* SpringBoot入口
* @author caojie
* @version 1.0
被@SpringBootApplication注解修饰的类是SpringBoot的启动类
*/
@SpringBootApplication
public class HelloSpringBoot {
public static void main(String[] args) {
SpringApplication.run(HelloSpringBoot.class,args);
}
}
2.9运行程序
http://localhost:8081/hello
2.10小结
父工程:1建立工程 2 编写父工程的POM 3删除父工程的src目录
子模块:1 建立子模块 2 编写POM 3 yml配置文件 4定义日志文件 5编写Controller控制器类 6 编写SpringBoot入口类
核心:
@SpringBootApplication @RestController
3.1创建子模块(Module)
3.2定义子模块的POM文件
shouyixueyuan-springboot-water
com.shouyi
1.0-SNAPSHOT
4.0.0
shouyixueyuan-springboot-water-demo-01
org.springframework.boot
spring-boot-starter-web
ch.qos.logback
*
org.apache.logging.log4j
*
org.springframework.boot
spring-boot-starter-actuator
org.springframework.boot
spring-boot-devtools
runtime
true
org.springframework.boot
spring-boot-starter-log4j
1.3.8.RELEASE
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
mysql
mysql-connector-java
com.baomidou
mybatis-plus-boot-starter
com.alibaba
druid-spring-boot-starter
org.projectlombok
lombok
io.springfox
springfox-swagger2
io.springfox
springfox-swagger-ui
cn.hutool
hutool-all
log4j
log4j
org.slf4j
jcl-over-slf4j
org.junit.platform
junit-platform-launcher
org.junit.platform
junit-platform-commons
3.3编写YML配置文件
application.yml
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/shouyi?useUnicode=true&characterEncoding=UTF8&useSSL=false
driver-class-name: com.mysql.jdbc.Driver
username: root
password: root
druid:
min-idle: 5
max-active: 10
max-wait: 5000
type: com.alibaba.druid.pool.DruidDataSource
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# 全局策略配置,全部都是用auto策略(数据库ID自增长)
global-config:
db-config:
id-type: auto
# 配置日志级别
logging:
com.shouyi: info
3.4 编写日志配置文件
# 将日志级别为DEBUG的日志信息输出到file(文件)和console(控制台)这两个目的地
log4j.rootLogger=INFO, file, console
# 文件输出的相关设置
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./log/caojie.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
#控制台输出的相关设置
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss SSS} %5p %c{1}:%L - %m%n
#日志输出级别
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
3.5定义相关的package
entities包放置实体类
mapper包放置Mapper映射文件
service包放置业务逻辑接口和实现类
controller包放置Controller控制器
3.6定义SpringBoot启动类
package com.wenhua.springboot;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* TODO
* @author caojie
* @version 1.0
@MapperScan扫描指定包下面的所有接口,在编译之后都会生成对应的实现类
*/
@SpringBootApplication
@MapperScan("com.wenhua.springboot.mapper")
public class CustomerSpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(CustomerSpringBootApplication.class,args);
}
}
3.7 在IDEA里面安装Lombok插件
3.8定义Customer实体类
package com.wenhua.entities;
import lombok.AllArgsConstructor;
import lombok.Data;
/**
* TODO
* @author caojie
* @version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Customer {
private Integer cid;
private String custName;
private String custMobile;
private String custAddress;
private Integer custTicket;
}
3.9定义Mapper接口
封装了数据库访问的所有操作(CRUD 增删改查)。Mapper用来在数据库表和Java实体类的属性之间做映射
package com.wenhua.springboot.mapper;
import com.wenhua.springboot.entities.Customer;
import java.util.List;
/**
* TODO:Mapper用于在数据库表和Java实体类之间做映射,封装了数据库所有的增删改查操作,用于跟数据库交互
* @author caojie
* @version 1.0
*/
@Repository
public interface CustomerMapper extends BaseMapper {
List listCustomer();
}
3.10编写业务逻辑接口Service
package com.shouyi.service;
import com.shouyi.pojo.Customer;
import java.util.List;
/**
* TODO
* @author caojie
* @version 1.0
* @date 2021/10/09 13:10
*/
public interface CustomerService {
String hello();
List listCustomer();
}
3.11编写Service实现类
package com.shouyi.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.shouyi.mapper.CustomerMapper;
import com.shouyi.pojo.Customer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* TODO
* @author caojie
* @version 1.0
* @date 2021/10/19 13:10
*/
@Service
public class CustomerServiceImpl implements CustomerService {
@Autowired
private CustomerMapper customerMapper;
@Override
public List listCustomer() {
return customerMapper.selectList(null);
}
}
3.12编写Controller控制器
package com.wenhua.springboot.controller;
import com.wenhua.springboot.service.CustomerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* TODO: 当客户在浏览器输入http://localhost:8097/listCustomer,请求会派发给CustomerController的listCustomer()方法处理该请求(向浏览器输出所有客户信息)
* @author caojie
* @version 1.0
* @date 2021/6/21 21:48
*/
@RestController
public class CustomerController {
/**
* @Autowired根据类型自动装配业务逻辑层的CustomerService对象
*/
@Autowired
private CustomerService customerService;
@GetMapping("/listCustomer")
public String listCustomer(){
return customerService.listCustomer().toString();
}
}
3.13启动应用程序
http://localhost:8081/listCustomer
3.14 小结
entities 包下面放置实体类 1
mapper包放置Mapper接口,它负责数据库表和Java实体类属性的映射 2
service包放置业务逻辑接口和实现类 3
controller包放置控制器类 4
service业务逻辑需要依赖Mapper接口,所以需要自动装配
controller控制器需要依赖service,所以需要自动装配