yml不识别_SpringBoot(2):yml配置文件和集成其他框架

本文介绍了SpringBoot的配置文件,包括默认的application.properties和使用更直观的YML格式。详细讲解了YML文件的语法,并展示了如何配置普通数据和对象数据。接着,文章展示了SpringBoot如何整合Mybatis、集成junit测试、SpringDataJpa以及Redis,提供了详细的配置步骤和测试结果。
摘要由CSDN通过智能技术生成

springBoot配置文件

SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用application.properties或者application.yml(application.yaml)进行配置。

SpringBoot默认会从Resources目录下加载application.properties或application.yml(application.yaml)文件

其中,application.properties文件是键值对类型的文件,除了properties文件外,SpringBoot还可以使用yml文件进行配置。

YML文件

YML文件格式是YAML (YAML Aint Markup Language)编写的文件格式,YAML是一种直观的能够被电脑识别的的数据数据序列化格式,

并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,比如: C/C++, Ruby, Python, Java, Perl, C#, PHP等。

YML文件是以数据为核心的,比传统的xml方式更加简洁。YML文件的扩展名可以使用.yml或者.yaml。

配置普通数据

语法:

key: value

比如

name: zhangsan

注意:和value之前有一个空格

配置对象数据

语法:

key: 
​	key1: value1
​	key2: value2

或者:

​key: {key1: value1,key2: value2}

比如:

person:
	name: haohao
	age: 31
	addr: beijing

或者

person: {name: haohao,age: 31,addr: beijing}

我们在application.properties的配置可以改为application.yml的:

server:
port: 8082
servlet:
context-path: /newName

配置数据、集合(普通字符串)

集合中的数据为字符串

city:
  - beijing
  - tianjin
  - chongqing
  - shanghai

或者行内配置

city: [beijing,tianjin,chongqing,shanghai]

配置数据、集合(对象数据)

集合中的数据为对象

student:
  - name: tom
	age: 18
	addr: beijing
  - name: lucy
	age: 17
	addr: tianjin

或者行内配置

student: [{name: tom,age: 18,addr: beijing},{name: lucy,age: 17,addr: tianjin}]

Map配置

map:
  key1: value1
  key2: value2

获取配置文件中的数据

使用@Value注解

不需要getter和setter方法

@Controller
public class QuickValueController {
    @Value("${name}")
    private String name;

    @Value("${person.addr}")
    private String addr;

    @RequestMapping("/quick2")
    @ResponseBody
    public String Quick() {
        System.out.println(name);
        System.out.println(addr);
        return "name:" + name + " addr:" + addr;
    }
}

d37abacb4ec036f4206c9c87c55ed6de.png

使用@ConfigurationProperties注解

需要getter和setter方法

@Controller
@ConfigurationProperties(prefix = "person")
public class QuickConfigurationPropertiesController {

    private String name;
    private Integer age;
    private String addr;

    @RequestMapping("/quick3")
    @ResponseBody
    public String Quick() {
        System.out.println(name);
        System.out.println(addr);
        return "name:" + name + " age:" + age + " addr:" + addr;
    }
}

815bed04e93f25eedcafeeb37ea1ba4b.png

SpringBoot整合Mybatis

mybatis起步依赖

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.1.1</version>
</dependency>

添加数据库驱动坐标

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

添加数据库连接信息(在application.properties)

#DB Configuration:
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root

创建实体 domain.User

在resources目录下创建UserMapper.xml

创建持久化接口 mapper.UserMapper

在application.properties配置

pojo别名扫描包

mybatis.type-aliases-package=cn.figo.domain

加载Mybatis映射文件

mybatis.mapper-locations=classpath:mapper/*Mapper.xml

写controller类

@Controller
public class MybatisController {

    @Autowired
    private UserMapper userMapper;

    @RequestMapping("/query")
    @ResponseBody
    public List<User> queryUserList(){
        List<User> users = userMapper.queryUserList();
        return users;
    }

}

结果如下:

97cb95fa6c05e6d7e4fe24e75807d96e.png

集成junit

测试的起步依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

测试

@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringbootCombineOtherApplication.class)
public class MybatisTest {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void test(){
        List<User> users = userMapper.queryUserList();
        System.out.println(users);
    }
}

结果如下:

b242189fd1a98f3ff529f9a9b79a6648.png

集成SpringDataJpa

springBoot JPA的起步依赖

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

jdk9需要导入如下坐标

<dependency>
	<groupId>javax.xml.bind</groupId>
	<artifactId>jaxb-api</artifactId>
	<version>2.3.0</version>
</dependency>

给实体类加jap注解

添加jpa的持久化接口

public interface UserRepository extends JpaRepository<User,Long> {

    public List<User> findAll();

}

在spring配置文件中加jpa配置

#JPA Configuration:
spring.jpa.database=MySQL
spring.jpa.show-sql=true
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy

然后测试

@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringbootCombineOtherApplication.class)
public class JpaTest {

    @Autowired
    private UserRepository userRepository;

    @Test
    public void test(){
        List<User> all = userRepository.findAll();
        System.out.println(all);
    }
}

结果如下;

3f3b5b1e3f6932bd34b60e50737cd321.png

集成redis

配置使用redis启动器

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

在spring配置文件中加redis配置

#Redis
spring.redis.host=127.0.0.1
spring.redis.port=6379

测试:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringbootCombineOtherApplication.class)
public class RedisTest {

    @Autowired
    private UserRepository userRepository;

    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    @Test
    public void test() throws JsonProcessingException {
        //从redis缓存中获得指定的数据
        String userListData = redisTemplate.boundValueOps("user.findAll").get();
        //如果redis中没有数据的话
        if(null==userListData){
            //查询数据库获得数据
            List<User> all = userRepository.findAll();
            //转换成json格式字符串
            ObjectMapper om = new ObjectMapper();
            userListData = om.writeValueAsString(all);
            //将数据存储到redis中,下次在查询直接从redis中获得数据,不用在查询数据库
            redisTemplate.boundValueOps("user.findAll").set(userListData);
            System.out.println("===============从数据库获得数据===============");
        }else{
            System.out.println("===============从redis缓存中获得数据===============");
        }

        System.out.println(userListData);

    }
}

结果如下

66ac36e19f22898360b124e4e2f3b781.png

1c5337efbd7ea4d191928ac8931b9bbf.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值