org.springframework.boot
spring-boot-starter-parent
3.1.2
org.springframework.boot
spring-boot-starter-web
3.1.0
@SpringBootApplication//表明是SpringBoot的类
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class,args);//自动加载ioc容器,和启动tomcat
}
}
@RestController
public class TestController {
@GetMapping("hello/springboot")
public String hello(){
return "你好,Spingboot";
}
}
如此就ok了!
xml
#设置项目的跟路径名称,默认值为“/”,注意配置文件字符串不用加“”,同时等号不用前后空格,没要求
server.servlet.context-path=/myProject
#自定义的配置文件
my.name=ChenPei
my.lover=beauty
yaml(yml)
#设置项目的跟路径名称,默认值为“/”,注意配置文件字符串不用加“”,同时等号不用前后空格,没要求
#注意数据冒号跟值要空格,否则无法识别
server:
servlet:
context-path: /myProject
my:
name: ChenPei
lover: beauty
@Value("${my.name}")
String myName;
接收的类:使用类在类上标注解的方式也可以接受集合数据
@Repository//注入到容器自动接收的基础
@ConfigurationProperties("my")//写到类对应属性之前的结构
public class User {
String name;
String lover;
//省略了必要的setter和getter方法
}
#指定要加载的其他配置文件,active后直接跟名称后缀
spring:
profiles:
active: test #我有个叫application.yml的配置文件
spring:
#指定要加载的其他配置文件,active后直接跟名称后缀
web:
resources:
static-locations: classpath:/mystatics/mystatic
比如上面A情况,我调用就是http:地址:端口/项目路径/静态资源
直接就越过了指定的静态资源文件路径
A、首先引入需要的依赖:
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-jdbc
com.mysql
mysql-connector-j
8.0.32
com.alibaba
druid-spring-boot-3-starter
1.2.18
设置数据源必须的一些配置:
server:
servlet:
context-path: /myProject
#指定使用的数据源.
my:
name: ChenPei
lover: beauty
#指定使用的数据源类型
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
#指定数据源必须的四大要素:
username: root
url: jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8
password: chen13515216766
driver-class-name: com.mysql.cj.jdbc.Driver
#下面的数据源配置配置可选
# 初始化时建立物理连接的个数
initial-size: 5
# 连接池的最小空闲数量
min-idle: 5
# 连接池最大连接数量
max-active: 20
# 获取连接时最大等待时间,单位毫秒
max-wait: 60000
# 申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
test-while-idle: true
# 既作为检测的间隔时间又作为testWhileIdel执行的依据
time-between-eviction-runs-millis: 60000
# 销毁线程时检测当前连接的最后活动时间和当前时间差大于该值时,关闭当前连接(配置连接在池中的最小生存时间)
min-evictable-idle-time-millis: 30000
# 用来检测数据库连接是否有效的sql 必须是一个查询语句(oracle中为 select 1 from dual)
validation-query: select 1
# 申请连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
test-on-borrow: false
# 归还连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
test-on-return: false
# 是否缓存preparedStatement, 也就是PSCache,PSCache对支持游标的数据库性能提升巨大,比如说oracle,在mysql下建议关闭。
pool-prepared-statements: false
# 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100
max-pool-prepared-statement-per-connection-size: -1
# 合并多个DruidDataSource的监控数据
use-global-data-source-stat: true
设置主启动类后(省略),创建controller类
@RestController
public class EmployeeController {
//注入jdbcTemplate
@Autowired
JdbcTemplate jdbcTemplate;
//查找employees的映射
@GetMapping("getEmployees")
public List getEmployees(){
String sql = "select eid,emp_name empName,emp_sex empSex,emp_age empAge,emp_email empEmail" +
",did from t_emp";
List employees = jdbcTemplate.query(sql, new BeanPropertyRowMapper(Employee.class));
System.out.println(employees);
return employees;
}
}
最后修复druid对springboot3的支持:
在resource文件夹下创建文件夹META-INF/spring然后在该文件夹下创建文件:org.springframework.boot.autoconfigure.AutoConfiguration.imports,然后输入一下内容
com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure
首先添加依赖:
org.mybatis.spring.boot
mybatis-spring-boot-starter
3.0.2
然后在application.yml中使用约定的配置指定mybatis的映射文件路径等关键配置:
mybatis:
mapper-locations: classpath:/mappers/*.xml #指定映射文件位置
configuration:
map-underscore-to-camel-case: true #开启驼峰自动映射
再创建mapper接口和xml映射文件
@Mapper//标注此注解会被自动扫描
public interface EmployeeMapper {
//获取employees集合
List getEmployees();
}
最关键要再主类上加上@MapperScan注解并在value中指定mapper接口所在包,这样就告诉了主类将指定包下面的mapper接口放入容器创建代理。
@SpringBootApplication//表明是SpringBoot的类
@MapperScan("com.chenpei.springboot.mappers")//让spring注解扫描到Mapper注解标注的类
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class,args);//自动加载ioc容器,和启动tomcat
}
}
引入aop场景启动器:
org.springframework.boot
spring-boot-starter-aop
自定义类标注为aop增强类,注入容器就可以使用了:
@Aspect //标注为aop强化类
@Order(0)//为该强化类设置优先级
@Component//放入容器
public class MyAop {
//标注前置通知
@Before("execution(* com.chenpei.springboot.controller.EmployeeController.getEmployees(..))")
public void beforeMe(){
System.out.println("前置通知执行了!");
}
}
引入jdbc场景启动器,里面包含了tx
org.springframework.boot
spring-boot-starter-jdbc
在其中有dml(使数据库数据变化的语句)逻辑的方法或类上加上@Transactional,就直接开启了事务:
@Transactional //开启事务
@GetMapping("getEmployees")
public List getEmployees(){
List employees = employeeMapper.getEmployees();
return employees;
}
org.springframework.boot
spring-boot-maven-plugin
3.1.2
打包后的文件名:
放到本地运行:
这里我们尝试在本次执行时修改项目路径为/youProject,通过-D指定要增加或修改的参数
java -jar -Dserver.servlet.context-path=/youProject /Users/chenpei/Downloads/springboot-one-1.0-SNAPSHOT.jar
所有配置文件都可在其中指定一个-D指定一个配置项。