@ConfigurationProperties

/**
 * 将配置文件中配置的每一个属性的值,映射到这个组件中
 * @ConfigurationProperties: 告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定
 * prefix = "person" : 配置文件中哪个下面的所有属性进行一一映射
 * @Component : 只有这个组件是容器中的组件,才能使用容器提供中提供的功能
 *
 */
@Component
@ConfigurationProperties(prefix = "person")

@PropertySource(value = {"classpath:person.properties"})

加载指定的配置文件

/**
 * 将配置文件中配置的每一个属性的值,映射到这个组件中
 * @ConfigurationProperties: 告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定
 * prefix = "person" : 配置文件中哪个下面的所有属性进行一一映射;
 * @ConfigurationProperties(prefix = "person") 默认从全局配置文件中获取值;
 * @Component : 只有这个组件是容器中的组件,才能使用容器提供中提供的功能
 * @PropertySource(value = {"classpath:person.properties"}) 加载指定的配置文件
 */
@PropertySource(value = {"classpath:person.properties"})
@Component
@ConfigurationProperties(prefix = "person")
public class Person {

    private String lastName;
    private Integer age;
    private Boolean boss;
    private Date birth;

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

cs.jpg

@ImportResource

导入Spring的配置文件,让配置文件里面的内容生效;SpringBoot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别;想让Spring配置文件生效,加载进来;那么使用@ImportResource标注在一个配置类上。

//导入Spring的配置文件让其生效
@ImportResource(locations={"classpath:bean.xml"})

@Configuration

SpringBoot推荐给容器中添加组件的方式;推荐使用全注解的方式;在SpringBoot中使用配置类的方式来替代Spring配置文件。

//测试类
@Autowired
    ApplicationContext ioc;

    @Test
    public void testHelloService(){
        boolean b=ioc.containsBean("helloService");
        System.out.println(b);
    }
/**
 * @Configuration 指明当前类是一个配置类;就是来替代以前的Spring配置文件
 *
 * 在配置文件中用<bean><bean/>标签添加组件
 */
@Configuration
public class MyAppConfig {
    //@Bean 将方法的返回值添加到容器中,容器中这个组件默认的id就是方法名
    @Bean
    public HelloService helloService(){
        System.out.println("配置类@Bean给容器中添加组件了=========");
        return new HelloService();
    }
}

配置文件占位符

RandomValuePropertySource:配置文件中可以使用随机数。

${random.value}  ${random.int}  ${random.long}
${random.int(10)}

属性配置占位符

占位符获取之前配置的值,如果没有可以使用指定默认的值。

person.last-name:张三${random.uuid}
person.age=${random.int}
person.birth=2015/05/26
person.boss=false
person.maps.k1=v1
person.lists=a,d,c
#person.dog.name=${person.last-name}-dog
person.dog.name=${person.hello:hello}-dog
person.dog.age=10

Profile

Profile是Spring对不同环境提供不同配置功能的支持,可以通过激活,指定参数等方式快速切换环境。

多profile文件形式

格式:application-.properties application-dev.properties,application-prod.properties

多profile文档块模式

server:
  port: 8081

spring:
  profiles:
    active: dev
---
server:
  port: 8082
spring:
  profiles: dev
---
server:
  port: 8083
spring:
  profiles: prod

---

激活方式

1,在配置文件中指定 spring.profiles.active=dev

2,命令行方式配置:--spring.profiles.active=prod

profile.jpg

3,jvm参数方式配置:-Dspring.properties.active=dev

profile0.jpg

在application.properties里配置数据源和jpa相关的属性。

1)hibernate提供了根据实体类自动维护数据库表结构的功能,可通过Spring.jpa.hibernate.ddl-auto来配置

  • create: 启动时删除上一次生成的表,并根据实体类生成表,表中数据会被清空
  • create-drop:启动时根据实体类生成表,sessionFactory关闭时表会被删除
  • update:启动时根据实体类生成表,当实体类属性变动的时候,表结构也会更新,在初期开发阶段使用此选项
  • validate:启动时验证实体类和数据表是否一致,在数据结构稳定时采用此选项
  • none:不采取任何措施

2)spring.jpa.show-sql用来设置hibernate操作的时候在控制台显示其真实的sql语句

@Entity

指明这是一个和数据库表映射的实体类

@Id

指明这个属性映射为数据库的主键

@GeneratedValue

默认使用主键生成方式为自增,hibernate会自动生成一个名为HIBERNATE_SEQUENCE的序列

未完待续...