栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

@PropertySource配置的用法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

@PropertySource配置的用法

目录

功能:

用法一:@PropertySource + @Value

用法二:@PropertySource 和 @ConfigurationProperties

用法三:@ConfigurationProperties + application.yml


功能:
  • 加载指定的属性文件(*.properties)到 Spring 的 Environment 中。可以配合 @Value 和                                                    @ConfigurationProperties 使用。
  • @PropertySource 和 @Value组合使用,可以将自定义属性文件中的属性变量值注入到当前类的使用@Value注解的成员变量中。
  • @PropertySource 和 @ConfigurationProperties组合使用,可以将属性文件与一个Java类绑   定,将属性文件中的变量值注入到该Java类的成员变量中。

源码

package org.springframework.context.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.springframework.core.io.support.PropertySourceFactory;

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Repeatable(PropertySources.class)
public @interface PropertySource {

    
    String name() default "";

    
    String[] value();

    
    boolean ignoreResourceNotFound() default false;

    
    String encoding() default "";

    
    Class factory() default PropertySourceFactory.class;

}

用法一:@PropertySource + @Value

属性文件:jdbc.properties

jdbc.driverClassName=jdbc.mysql
jdbc.url=mysql:jdbc://localhost:3306/ssm_db
jdbc.username=root
jdbc.password=123
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;


@Component
@PropertySource(value = {"classpath:jdbc.properties"})
public class JdbcProperty {

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


    public String getDriverClassName() {
        return driverClassName;
    }

    public void setDriverClassName(String driverClassName) {
        this.driverClassName = driverClassName;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "JdbcProperty{" +
                "driverClassName='" + driverClassName + ''' +
                ", url='" + url + ''' +
                ", username='" + username + ''' +
                ", password='" + password + ''' +
                '}';
    }
}

用法二:@PropertySource 和 @ConfigurationProperties
@Component
@PropertySource(value = {"classpath:jdbc.properties"})
@ConfigurationProperties(prefix = "jdbc")
public class JdbcProperty {

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


    public String getDriverClassName() {
        return driverClassName;
    }

    public void setDriverClassName(String driverClassName) {
        this.driverClassName = driverClassName;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "JdbcProperty{" +
                "driverClassName='" + driverClassName + ''' +
                ", url='" + url + ''' +
                ", username='" + username + ''' +
                ", password='" + password + ''' +
                '}';
    }

测试案例:

@RestController
public class UserController {

    @Autowired
    private UserService userService;
    @Autowired
    JdbcProperty jdbcProperty;

    @PostMapping("/save")
    public String save(@RequestParam Map userMap){
        System.out.println(jdbcProperty.toString());

//        userService.save(userMap);
        return "save success";
    }
}

测试结果:

JdbcProperty{driverClassName='jdbc.mysql', url='mysql:jdbc://localhost:3306/ssm_db', username='root', password='123'}

用法三:@ConfigurationProperties + application.yml

DbConfig.java

@Configuration
public class DBConfig {

    @Bean
    @ConfigurationProperties(prefix = "jdbc")
    public DataSource dataSource(){
        return new DruidDataSource();
    }

    @Bean
    public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource);
        return factoryBean;
    }

}

application.yml

server:
  port: 1111
jdbc:
  driverClassName: jdbc.mysql
  url: mysql:jdbc://localhost:3306/ssm_db
  username: root
  password: 123

测试案例:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/996367.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号