spring boot学习简要笔记1

1.resource文件夹下的目录结构

static:静态资源:js,css,images

templates:保存模板页面(例如:spring boot默认jar包使用嵌入式的tomcat,所以是不支持jsp的,但可以使用模板引擎)

application.properties:spring boot应用的配置文件yaml,properties

2.配置文件

spring boot默认有application.properties,application.yaml两个为全局配置文件,用于修改spring boot在底层给我们默认配置好的一些默认值

yaml以数据为中心,比json、xml更适合作为配置文件

yaml:

server:
  port: 8081

xml:

<server>
	<port>8081</port>
</server>

使用yaml配置文件可以向我们的Javabean配置基本值

@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private String lastName;
    private Integer age;
    private Date brith;

    private Map<String,Object> maps;
    private List<Object> list;
    private Dog dog;
}
person:
  lastName: key.l
  age: 18
  brith: 2019/10/24
  maps: {k1: v1,k2: v2}
  list:
    -1
    -2
  dog:
    name: dog
    age: 1

这里需要注意的点是,使用@ConfigurationProperties这个注解的时候我们应该需要一个spring-boot-configuration-processor的驱动,需要这个驱动来从配置文件中获取配置的值。

然后在spring boot 的test文件夹里面进行测试。就可以了,这下面是我的控制台打印信息

Person{lastName='key.l', age=18, brith=Thu Oct 24 00:00:00 CST 2019, maps={k1=v1, k2=v2}, list=[-1 -2], dog=Dog{name='dog', age=1}}

同样能实现注册的还有@Value,例如

@Component
//@ConfigurationProperties(prefix = "person")
public class Person {
	@Value(${SpEL})
    private String lastName;
    private Integer age;
    private Date brith;

    private Map<String,Object> maps;
    private List<Object> list;
    private Dog dog;
}

但是@Value相对于@ConfigurationProperties的缺点是不支持JR303数据校验和松散绑定。并且最致命的是复杂类型的封装问题会十分麻烦

总结:

如果只是在业务逻辑中用到一下值,我们可以用value来进行赋值

如果我们用专门的Javabean对象与配置文件进行映射,最好是用configurationproperties

3.@PropertySource和@ImportResource

@PropertySource:加载指定配置文件

@ImportResource:导入我们的spring的配置文件,让配置文件的内容生效,springboot里面没有包括spring的配置文件,也无法自动识别,想让spring的配置文件就需要用importResource导入进来。把@ImportResource标记在主配置类上面。

新建一个HelloService类后我们写一个xml配置一下测试

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="helloService" class="com.cheerful.springboot.service.HelloService"/>
</beans>
    @Autowired
    ApplicationContext ioc;

    @Test
    public void test(){
        boolean helloService = ioc.containsBean("helloService");
        System.out.println(helloService);
    }

打印的是false

@ImportResource({"classpath:beans.xml"})

把这行代码加到spring boot主类上面,已导入beans.xml的spring配置文件。

然后spring boot推荐的方式是全注解的形式进行开发;

所以这里我们就可以用写一个配置类的方式来代替配置文件。

@Configuration
public class MyAppConfig {
    //将方法的返回值返回到容器中去,容器中组件默认的id就是方法名
    @Bean
    public HelloService helloService(){
        return new HelloService();
    }
}

4.profile

profile是spring对不同环境提供不同配置功能的支持,可以以激活、指定参数等方式来快速的切换环境

1.yaml

server:
  port: 8081
spring:
  profiles:
    active: dev
---
server:
  port: 8082
spring:
  profiles: dev
---
server:
  port: 8083
spring:
  profiles: product

2.多profile文件形式:

application-{profile}.properties;

3.命令行,配置文件,虚拟机激活

命令行–spring.profiles.active=dev

配置文件spring.profiles.active=dev

虚拟机-Dspring.profiles.active=dev

5.配置文件加载位置

spring boot启动会扫描这些位置的application.yaml或者properties作为配置文件。

file的config目录或者根目录,classpath的config目录或者根目录。并且优先级由先后顺序覆盖相同的配置信息,不同的配置信息进行互补配置

我们以可以通过spring.config.location更改默认配置

以及通过jar包外,包内的配置文件都是可以的

6.SLF4J的使用

开发的时候,日志方法的调用应该调用抽象层的方法,而不是直接调用实现类里面的

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HelloWorld {
  public static void main(String[] args) {
    Logger logger = LoggerFactory.getLogger(HelloWorld.class);
    logger.info("Hello World");
  }
}

2.如何让系统中其他的日志框架都移到slf4j:

将系统中其他的日志框架排除,再用中间包来替换原有的日志框架,在导入slf4j其他的实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值