交流群:462197261站长百科站长论坛热门标签收藏本站北冥有鱼 互联网前沿资源第一站 助力全行业互联网+
点击这里给我发消息
  • 当前位置:
  • Springboot在有参构造方法类中使用@Value注解取值

    我们在Springboot中经常使用@Value注解来获取配置文件中的值,像下面这样

    @Component
    class A {
       @Value("${user.value}")
       private String configValue;
       
       public void test() {
          System.out.println(configValue);
       }
    }

    但有时我们需要这个类拥有一个有参的构造方法,比如

    @Component
    class 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类:

    @Configuration
    public class AConfig {
      @Bean(name="abc")
      DataOpration abcA() {
        return new A("abc");
      }
    }

    然后创建SpringUtil类

    @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;
        }
      }
    
      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();

    就可以同时获取到配置文件中的值和传入的参数。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持北冥有鱼。


    广而告之:
    热门推荐:
    mysql 单机数据库优化的一些实践

    数据库优化有很多可以讲,按照支撑的数据量来分可以分为两个阶段:单机数据库和分库分表,前者一般可以支撑500W或者10G以内的数据,超过这个值则需要考虑分库分表。另外,一般大企业面试往往会从单机数据库问起,一步一步问到分库分表,中间会穿插很多数据库优化的问题。本文试···

    解决jQuery ajax动态新增节点无法触发点击事件的问题

    在写ajax加载数据的时候发现,后面添加进来的demo节点元素,失去了之前的点击事件。为什么点击事件失效,我们该怎么去解决呢? 其实最简单的方法就是直接在标签中写onclick="",但是这样写其实是有点low的,最好的方式还是通过给类名绑定一个click事件。 解决jQuery ajax动···

    wordpress在lighttpd下的重写规则及注意细节

    wordpress博客是使用人数最多的一个开源博客程序,静态化也是最多人像要到的问题,对于新手来收,静态化的处理可能有点困难,有些空间需要使用静态插件来达到,但其实很多空间是不需要插件来静态化的,能重写url规则就开源达到静态化的处理了。好,下面看看。lighttpd下···

    CSS3中设置3D变形的transform-style属性详解

    transform-style属性是3D空间一个重要属性,指定嵌套元素如何在3D空间中呈现。他主要有两个属性值:flat和preserve-3d。 transform-style属性的使用语法非常简单: CSS Code复制内容到剪贴板 transform-style: flat | preserve-3d   其中flat值···

    AngularJS实现自定义指令及指令配置项的方法

    本文实例讲述了AngularJS实现自定义指令及指令配置项的方法。分享给大家供大家参考,具体如下: AngularJS自定义指令有两种写法: //第一种 angular.module('MyApp',[]) .directive('zl1',zl1) .controller('con1',['$scope',func1]); function zl1(){ var directive={ ···

    网站关键词排名下降原因有哪些

    网站的上下,牵动着每一位站长的心,辛辛苦苦努力几个月的词,一夜间下滑,是不少站长遇到的问题,问题的出现总会有一定原因的,因此分析好友什么原因会导致网站排名的下滑,才可以及时调整,稳坐军中帐。郑州-雪山SEO博客认为一个合格的SEO要懂得用网站数据检查排名下降的原···

    jQuery 实现自动填充邮箱功能(带下拉提示)

    在做这个功能时候,我参考的是网易注册(http://reg.163.com/reg/reg.jsp?product=urs)中的邮箱栏目所实现的功能与效果。这个功能的目的是使用户在填写邮箱栏目的过程中,在带有邮箱后缀名的菜单的提示下,可以不需要完整输入自己的注册邮箱,达到方便、快捷、友好的效果···

    jquery实现的下拉和收缩效果示例

    下拉和收缩类似的效果应用非常的频繁,本章节简单介绍一下如何实现此效果。 代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <head> <title&g···

    jquery点击页面任何区域实现鼠标焦点十字效果

    系统开发时很多地方需要有焦点效果,例如:鼠标点击聚焦,地图定位,在图片上突出显示,焦点定位页面元素。 本小功能通过jquery和graphics二次开发,实现通过鼠标点击页面任何区域,聚焦当前点击位置。适用于页面任何元素的位置效果。 首先引入jquery引擎包:jquery-1.4.2···

    PHP中preg

    PHP中preg_match正则匹配的/u /i  /s是什么意思 /u 表示按unicode(utf-8)匹配(主要针对多字节比如汉字) /i 表示不区分大小写(如果表达式里面有 a, 那么 A 也是匹配对象) /s 表示将字符串视为单行来匹配