时间:2021-05-20
我们在Springboot中经常使用@Value注解来获取配置文件中的值,像下面这样
@Componentclass A { @Value("${user.value}") private String configValue; public void test() { System.out.println(configValue); }}但有时我们需要这个类拥有一个有参的构造方法,比如
@Componentclass A { @Value("${user.value}") private String configValue; private String s; public A(String s) { this.s = s; } public void test() { System.out.println(s); System.out.println(configValue); }}要使@Value生效,必须把Bean交给Spring进行管理,而不能使用new去实例化对象,否则@Value取值为NULL。我们一般使用@Autowired都是默认注入无参的构造方法,要想注入有参的构造方法,我们需要构建Config类:
@Configurationpublic class AConfig { @Bean(name="abc") DataOpration abcA() { return new A("abc"); }}然后创建SpringUtil类
@Componentpublic class SpringUtil implements ApplicationContextAware { private static ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { if(SpringUtil.applicationContext == null) { SpringUtil.applicationContext = applicationContext; } } public static ApplicationContext getApplicationContext() { return applicationContext; } //通过name获取 Bean. public static Object getBean(String name){ return getApplicationContext().getBean(name); }}在调用时,只需要获取到对应的Bean
A a = (A) SpringUtil.getBean("abc");
a.test();
就可以同时获取到配置文件中的值和传入的参数。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
spring的事务控制本质上是通过aop实现的。在springboot中使用时,可以通过注解@Transactional进行类或者方法级别的事务控制,也可以自己
spring的事务控制本质上是通过aop实现的。在springboot中使用时,可以通过注解@Transactional进行类或者方法级别的事务控制,也可以自己
我们使用@Service注解一个service,默认注入的是不带参的构造函数,如果我们需要注入带参的构造函数,怎么办?使用@Configuration+@Bea
springboot中各种配置项纪录1.@Value最早获取配置文件中的配置的时候,使用的就是这个注解,SpEL表达式语言。//使用起来很简单@Value("$
SpringBoot自带了任务调度器,通过注解的方式使用。启用方式:在配置类上注解org.springframework.scheduling.annotati