SpringBoot 从nacos拿取配置文件中的属性

yml文件中的属性:

sydatasource:
  dbd:
    - url: jdbc:oracle:thin:@18.1.99.88:1521/orclpdb
      driverClassName: oracle.jdbc.OracleDriver
      username: dbd
      password: 123456
aa:
  aa: 123

第一种:

在Controller、service中取值: 

    @Value("${aa.aa}")
    private String bookName; 

在工具类中取值:

     重要一点:调用工具类中的方法的时候使用时要让Spring来注入,就是用@Autowired的方式注入,不能用new 工具类()的方式自己创建,如果是用new创建的AuthUtil的话@Value就会失效

第二种:

     使用实体类注入(启动之后,可以正常在任何地方调用):

     

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;

/**
 * @Description:配置中心application.yml中sgdatasource的各个属性装配
 * @Date 2020年3月9日 上午11:00:32 @Author:DZ 
 */
@Component()
@ConfigurationProperties(prefix = "sydatasource")
@RefreshScope//实现配置文件修改,bean自动刷新功能
public class ApplicationBean {

	private List> dbd= new ArrayList<>();

	public List> getDbd() {
		return dbd;
	}

	public void setDlt(List> dbd) {
		this.dbd = dbd;
	}

}

Spring 管理bean工具类

package com.sgcc.dlt.utils;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

/**
 * @Description: 获取spring 所装配的bean
 * @Date 2020年3月9日 上午11:35:32 @Author:DZ 
 */
@Component
public class SpringUtil implements ApplicationContextAware {

	private static ApplicationContext applicationContext;

	@Override
	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
		if (SpringUtil.applicationContext == null) {
			SpringUtil.applicationContext = applicationContext;
		}
	}

	// 获取applicationContext
	public static ApplicationContext getApplicationContext() {
		return applicationContext;
	}

	// 通过name获取 Bean.
	public static Object getBean(String name) {
		return getApplicationContext().getBean(name);
	}

	// 通过class获取Bean.
	public static  T getBean(Class clazz) {
		return getApplicationContext().getBean(clazz);
	}

	// 通过name,以及Clazz返回指定的Bean
	public static  T getBean(String name, Class clazz) {
		return getApplicationContext().getBean(name, clazz);
	}

}

获取属性:

 

Object bean = SpringUtil.getBean("applicationBean");
List> dbdList = ((ApplicationBean) bean).getDbd();
String driver = dbdList.get(0).get("driverClassName");
String url = dbdList.get(0).get("url");
String user = dbdList.get(0).get("username");
String pwd = dbdList.get(0).get("password");

 

你可能感兴趣的:(java后台)