springboot的配置变量
最佳答案 问答题库798位专家为你答疑解惑
获取配置信息
如果是被spring容器所管理,一般采用@Value注解就可以读取到application.yml文件的内容。
但是不被spring容器管理,使用@Value是无效的。注入时会是NULL。但就是会有这样的场景,此时可采用在springboot启动类中将环境注入到某一个公共配置类,该类所有属性为公共静态属性攻外部类直接使用。
ConfigurableApplicationContext run = SpringApplication.run(DemoStarterTestApplication.class, args);ConfigurableEnvironment environment = run.getEnvironment();String address = environment.getProperty("server.address1");int age = Integer.parseInt(environment.getProperty("spring.user.age"));原文链接:https://blog.csdn.net/weixin_42740540/article/details/124348851
继承PropertyResolver,里面可以操作配置参数
JDBC操作获取系统变量
InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties");Properties pros = new Properties();pros.load(is);String user = pros.getProperty("user");String password = pros.getProperty("password");String url = pros.getProperty("url");String driverClass = pros.getProperty("driverClass");
@SpringBootApplication
public class MybatisPlusDemoApplication {public static void main(String[] args) {ConfigurableApplicationContext run= SpringApplication.run(MybatisPlusDemoApplication.class, args);ConfigurableEnvironment environment = run.getEnvironment();String address = environment.getProperty("server.address1");String username = environment.getProperty("spring.datasource.username");int age = Integer.parseInt(environment.getProperty("spring.user.age"));String name = environment.getProperty("server.name");EnvConfig envConfig = new EnvConfig();envConfig.setAddress(address);envConfig.setAge(age);System.out.println("地址为"+EnvConfig.address+",年龄为"+EnvConfig.age+"名字是:"+name);//获取ioc容器中的组件名字并打印出来String[] userBeanNames = run.getBeanNamesForType(User.class);for (String s : userBeanNames){System.out.println("---user:"+s);}// 判断id为user01的对象是否存在boolean b = run.containsBean("user01");System.out.println(b);// 直接获取容器当中的user对象User bean = run.getBean(User.class);System.out.println(bean);AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();context.getEnvironment().setActiveProfiles("like");context.register(AppConfigWithActiveProfile.class, AppConfigWithInactiveProfile.class);context.refresh();Subject subject = (Subject) context.getBean("subject");System.out.println("subject = " + subject);// ------------------------------ 测试 DependsOn ------------------------------AnnotationConfigApplicationContext contextDependsOn = new AnnotationConfigApplicationContext(AppConfigWithDependsOn.class);contextDependsOn.getBean(FirstBean.class);contextDependsOn.close();}}
SecondBean Initialized via Constuctor
ThirdBean Initialized via Constuctor
FirstBean Initialized via Constuctor
Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
Registered plugin: 'com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor@45792847'
Registered plugin: 'com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor@706cb08'
Parsed mapper file: 'file [D:\idea\gitDowload\WangPai1Zu\code\MybatisPlusDemo\target\classes\mapper\UserMapper.xml]'
_ _ |_ _ _|_. ___ _ | _
| | |\/|_)(_| | |_\ |_)||_|_\
/ |
3.5.1
地址为aa,年龄为19名字是:aa
---user:user01
true
User(id=null, name=null, createTime=null, updateTime=null, age=null, email=null)
subject = Subject{like='物理', wenke='null'}
SecondBean Initialized via Constuctor
ThirdBean Initialized via Constuctor
FirstBean Initialized via Constuctor
public class EnvConfig {public static String address;public static int age;public void setAddress(String address) {EnvConfig.address = address;}public void setAge(int age) {EnvConfig.age = age;}}
@Configuration
public class MyConfig {// 给容器中加入组件,以方法名作为组件id@Beanpublic User user01() {User user = new User();return user;}
}
@Profile("like")
@Configuration
public class AppConfigWithActiveProfile {@Beanpublic Subject subject(){Subject subject = new Subject();subject.setLike("物理");return subject;}}
@Profile("wenke")
@Configuration
public class AppConfigWithInactiveProfile {@Beanpublic Subject subject(){Subject subject = new Subject();subject.setWenke("历史");return subject;}
}
@Data
// 学科
public class Subject {// 理科private String like;// 文科private String wenke;@Overridepublic String toString() {return "Subject{" +"like='" + like + '\'' +", wenke='" + wenke + '\'' +'}';}
}
public class FirstBean {@Autowiredprivate SecondBean secondBean;@Autowiredprivate ThirdBean thirdBean;public FirstBean() {System.out.println("FirstBean Initialized via Constuctor");}
}
@Configuration
public class AppConfigWithDependsOn {@Bean("firstBean")@DependsOn(value = {"secondBean","thirdBean"})public FirstBean firstBean() {return new FirstBean();}@Bean("secondBean")public SecondBean secondBean() {return new SecondBean();}@Bean("thirdBean")public ThirdBean thirdBean() {return new ThirdBean();}
}
public class SecondBean {public SecondBean() {System.out.println("SecondBean Initialized via Constuctor");}
}
99%的人还看了
相似问题
猜你感兴趣
版权申明
本文"springboot的配置变量":http://eshow365.cn/6-9895-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!