SpringBoot(一)
Ⅰ.Overview
spring Boot - 构建项目 build
Spring Cloud - 数据通信 coordinate
Spring 缺点:
1 cumbersome config
2 cumbersome dependency
springBoot: 提供了一种快速使用Spring的方式
1. auto configuration
2. starting dependence
打包传递依赖,解决依赖问题
3. accessibility
no extra web server (no tomcat)
ⅠⅠ Using maven
1. maven
网上搜springboot reference Guide -> maven installation
-> parent + web
2. starting dependency
-使用jar的打包方式
-不用写version因为parent里面定义好了
use starter -> passing dependency -> resolve version conflicts
3. controller
@RestController
@RequestMapping("/hello")
4. Boot class(入口)
XXApplication.class
-> @SpringBootApplication
-> SpringApplication.run(XXApplication.class,args);
ⅠⅠⅠ Using Spring Initializer
ⅠⅤ config
/resources
- application.properties or
- application.yml/yaml
1. 提供2中配置文件类型
2. 默认配置名称:application
3. 优先级 .properties > .yml > .yaml
YAML:
1. case sensitive
2. space before data
3. array:"-"
3. reference: ${key}
READ CONFIG
1. @value("${person.name}")
private String name;
2. @Autowired
private Environment env;
=> env.getProperty("person.name");
3.notation on class:
@Component
@ConfigurationProperties(prefix = "person")
// 才会注入yml中person开头的
class Person{}
PROFILE: 不同环境下,动态配置切换
切换到生产 or 测试
激活profile方式
1.1 多文件方式
application.properties
=> spring.properties.active=dev
application-dev.properties
application-pro.properties
1.2. yml多文档方式,分隔符"---"
---
server: xxx
spring:
profiles: dev
---
spring:
profiles: pro
---
spring:
profiles:
active: pro
2.1 VM parameter
=> Run/Debug Configurations
=> VM options: -Dspring.profiles.active=test
or program args:
=> --spring.profiles.active=test
2.2 command active
Package jar
3.1 右边maven里package => get the jar
3.2 run jar => java -jar ./xxxx.jar --spring.profiles.active=test
内部config加载顺序
1. 项目./config/ => 是module前一级,
project -> project files -> add .properties
2. 项目./
在项目根目录下的config不会被package到jar!!!
3. classpath:/config/ =>resources/config/application.properties
4. classpath:./ => resource的根目录
项目访问路径:server.servlet.context-path=/hello
资源的访问路径:controller -> @RequestMapping("/hello")
外部config加载顺序
springboot reference guide
- externalized config
多种外部加载config的方式:
4.1 java -jar ./xxxx.jar --server.port=8082
4.2 java -jar ./xxxx.jar --spring.config.location=e://xxxxxx // 指定config的文件路径
4.3 把application.properties放在jar同级别,java -jar时自动读取
4.4 jar同级别的/config/
=> 现实应用:需要修改配置,可以重新打包jar,也可以修改外部配置
Ⅴ 整合Junit
1. @Service写Service类的方法
2. test/ServiceTest
@RunWith(SpringRunner.class)
@SpringBootTest(class = SpringBootApplication.class)
=> 如果ServiceTest和BootClass分别在test和main下同包名,可以省略
public class ServiceTest{
@Autowired 注入类,如果有波浪线,bean上加@Repository
@Test测试类
}
ⅤⅠ 整合Redis
Test中:
注入RedisTemplate,默认本机IP:6337
redisTml.boundValueOps("name").set("zhangsan");
redisTml.boundValueOps("name").get();
yml:
spring:
redis:
host:
ⅤⅠ 整合MyBatis: + module 勾选driver+mybatis
yml:
spring:
datasource:
url: jdbc:mysql:///databasename?serverTimezone=UTC
...
domain: User.class
mapper:
@Mapper
@Repository // 防止注入时的波浪线,可有可无
public interface UserMapper{
1. 注解方式
@Select("select * from t_user")
List<User> findAll();
}
test: testFindAll()
2. 文件方式
resources/mapper/UserMapper.xml
<mapper namespace="mapper全路径">
<select id= "findAll" resultType="user"> // "user"是取的别名
</select>
</mapper>
3. yml配置方式
mybatis:
mapper-locations: classpath:mapper/*Mapper.xml
type.aliases-package: domain全路径 // 用来识别user对应的domain