码迷,mamicode.com
首页 > 编程语言 > 详细

SpringBoot(十八)@value、@Import、@ImportResource、@PropertySource

时间:2018-12-23 00:18:38      阅读:461      评论:0      收藏:0      [点我收藏+]

标签:系统   编写   containe   double   nta   自己   except   name   演示   

Spring Boot提倡基于Java的配置。这两篇博文主要介绍springboot 一些常用的注解介绍

v@value

通过@Value可以将外部的值动态注入到Bean中。

添加application.properties的属性,方便后面演示。

domain.name=cnblogs
    @Value("字符串1")
    private String testName; // 注入普通字符串

    @Value("#{systemProperties[‘os.name‘]}")
    private String systemPropertiesName; // 注入操作系统属性

    @Value("#{ T(java.lang.Math).random() * 100.0 }")
    private double randomNumber; //注入表达式结果

    @Value("${domain.name}")
    private String domainName; // 注入application.properties的配置属性

效果如下:

技术分享图片

v@Import

SpringBoot 的 @Import 用于将指定的类实例注入之Spring IOC Container中。

package com.cnblogs.demo;
public class Dog {
 
}
package com.cnblogs.demo;
 
public class Cat {
 
}

在启动类中需要获取Dog和Cat对应的bean,需要用注解@Import注解把Dog和Cat的bean注入到当前容器中。

package com.cnblogs.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Import;
 
//@SpringBootApplication
@ComponentScan
/*把用到的资源导入到当前容器中*/
@Import({Dog.class, Cat.class})
public class App {
 
    public static void main(String[] args) throws Exception {
 
        ConfigurableApplicationContext context = SpringApplication.run(App.class, args);
        System.out.println(context.getBean(Dog.class));
        System.out.println(context.getBean(Cat.class));
        context.close();
    }
}

v@ImportResource

Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别;想让Spring的配置文件生效,加载进来;@ImportResource标注在一个配置类上.

@ImportResource(locations = {"classpath:applicationContext.xml"})
@SpringBootApplication
public class SpringBootConfigApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootConfigApplication.class, args);
    }
}

v@PropertySource

自定义配置文件名称,多用于配置文件与实体属性映射。

person.properties

person.lastName=Jack
person.age=18
person.birth=2018/12/9
person.boss=true
person.maps.key1=value1
person.maps.key2=value2
person.lists=a,b,c
person.dog.name=tom
person.dog.age=1
@PropertySource(value = {"classpath:person.properties"})
@ConfigurationProperties(prefix = "person")
@Component
public class Person {
    private String lastName;
    private Integer age;
    private boolean isBoss;
    private Date birth;

    private Map<String, Object> maps;
    private List<Object> lists;
    private Dog dog;
    ...setter/getter/toString...
}

SpringBoot(十八)@value、@Import、@ImportResource、@PropertySource

标签:系统   编写   containe   double   nta   自己   except   name   演示   

原文地址:https://www.cnblogs.com/toutou/p/9907753.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!