Spring导入配置文件/类 中的值

一、@Value注解
  • 该注解的作用是将我们配置文件的属性读出来,有**@Value(“${}”)@Value(“#{}”)**两种方式
  • @value不仅能取properties的值,在springboot中还能取yml的值

示例:

(1)在这里使用${}方式取配置文件中的值

public class TestController{
    
    @Value("${com.test.param1}")
    private String param1;
    
    @Value("${server.port}")
    private String port;
    
}

(2)使用 #{}方式取SpEL表达式对应的内容

public class TestController{
    
    // 这里我们取的值是注册在Spring容器中bean id 为userEntity的name的值
    
    @Value("#{userEntity.name}")
    private String name;

    @Value("#{userEntity.sex}")
    private String sex;
   
}
二、@PropertySource注解
  • 这个注解用来导入整个配置文件中的值,仅支持properties类型的配置文件

示例:

(1)导入指定路径下的配置文件

@Configuration
@PropertySource("classpath:/com/myconfig/app.properties")
public class AppConfig {
 
    @Autowired
    Environment env;
 
    @Bean
    public TestBean testBean() {
        TestBean testBean = new TestBean();
        testBean.setName(env.getProperty("testbean.name"));
        return testBean;
    }
}

(2)与@ConfigurationProperties类配合使用,封装成一个实体类。@ConfigurationProperties,它可以把同类的配置信息自动封装成实体类

数据库的配置文件:jdbc.properties

## 配置db数据库相关信息
datasource.drivername=com.mysql.jdbc.Driver
datasource.username=vipkid_xb
datasource.password=jmdneyh4m2UT
datasource.url=jdbc:mysql://localhost:3316/test?zeroDateTimeBehavior=convertToNull

#### 连接池相关
datasource.maximum-pool-size=10
datasource.auto-commit=true
datasource.connection-test-query=SELECT 1
datasource.connectionTimeout=20000
datasource.maxLifetime=180000

配置类:

@Configuration
@PropertySource(value = "classpath:jdbc.properties", name = "jdbc-config", ignoreResourceNotFound = false, encoding = "UTF-8")
@ConfigurationProperties(prefix = "datasource")
public class JdbcConfig implements TransactionManagementConfigurer {

    private String username;
    private String password;
    private String url;


    public void setUsername(String username) {
        this.username = username;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public void setUrl(String url) {
        this.url = url;
    }

    // 此处只是为了演示 所以不用连接池了
    @Bean
    public DataSource dataSource() {
        MysqlDataSource dataSource = new MysqlDataSource();
        dataSource.setUser(username);
        dataSource.setPassword(password);
        dataSource.setURL(url);
        return dataSource;
    }
}

另外:还可以直接把@ConfigurationProperties注解放在@Bean上

@Configuration
@PropertySource(value = "classpath:jdbc.properties", name = "jdbc-config", ignoreResourceNotFound = false, encoding = "UTF-8")
public class JdbcConfig implements TransactionManagementConfigurer {

    @ConfigurationProperties(prefix = "datasource")
    @Bean
    public DataSource dataSource() {
        //dataSource.setUser(username);
        //dataSource.setPassword(password);
        //dataSource.setURL(url);
        return new MysqlDataSource();
    }
}
三、使用@Import注解
  • @Import注解用来导入配置类(@Configuration注解的配置类、声明@Bean注解的bean方法等)
  • 它的作用就是可以将普通类导入到IOC容器中

示例:

创建一个Student实体类

public class Student{
    // 包含 id,name,sex,age等属性
}

创建配置类,这里使用@Import注解导入了Student类

@Configuration
@Import(Student.class)
public class ImportConfig {
	// 这里可以定义一个Bean方法返回一个Student对象
    @Bean
    public Student getStudent(){
        return new Student();
    }
}

测试代码

public static void main(String[] args){
       ApplicationContext ctx = 
           new AnnotationConfigApplicationContext(ImportConfig.class);
        String[] beanDefinitionNames = ctx.getBeanDefinitionNames();
        for (String name : beanDefinitionNames) {
            System.out.println(name);
        }
}

如果控制台打印了相关name,则证明导入成功

四、@ImportResource注解
  • 这个注解很简单,就是导入spring的xml配置文件

  • 通过locations属性加载对应的xml配置文件,同时需要配合@Configuration注解一起使用,定义为配置类

  • 用法请参考:https://www.jianshu.com/p/ec628153b7a2

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值