精华内容
下载资源
问答
  • spring静态注入

    2020-06-17 15:30:46
    spring普通的注入方式是基于类的对象的,static修饰的是基于类本身的,所以用普通的注解去注入静态对象的时候,会报java.lang.NullPointerException空指针运行时异常,这里提供两种比较常用的spring静态注入的方式,...

    spring普通的注入方式是基于类的对象的,static修饰的是基于类本身的,所以用普通的注解去注入静态对象的时候,会报java.lang.NullPointerException空指针运行时异常,这里提供几种种比较常用的spring静态注入的方式,一版在java代码的工具类中使用;

    首先在spring容器中配置要注入的bean

    <!--spring容器中配置要注入的bean -->
    <bean id="switchConfig" class="com.ambitious.SwitchConfig"/>

    然后在工具类中采用静态注入的方式来注入bean

    方式一:

    @Component
    public class CommonUtils {
    
    	private static SwitchConfig switchConfig;
    
    	@Autowired
    	public void setSwitchConfig(SwitchConfig switchConfig) {
    		CommonUtils.switchConfig = switchConfig;
    	}
    
        
        /***
         *
         *工具类的静态方法
         ***/
        public static String getSwitchValue(String key){
              
               return switchConfig.getValue(key);
        }
    
    	
    }

    总结:

          1.需要对工具类增加@Component 注解;

          2.将要注入的bean在工具类中申明下,用static修饰下;

          3.给要注入的bean生成setter方法,切记一定不能是静态的,同时要用注解@Autowired;

          4.然后再这个工具类中的静态方式里使用了;

     

    方式二:

        

    @Component
    public class CommonUtils {
    
        @Autowired
    	private SwitchConfig switchConfig;
    
        private static CommonUtils commonUtils;
        
        @PostConstruct
        public void init() {
            commonUtils = this;
        }
    
        /***
         *
         *工具类的静态方法
         ***/
        public static String getSwitchValue(Sting key) {
            
              return commonUtils.switchConfig.getValue(key);
        }
    	
    }

    总结:

          1.需要对工具类增加@Component 注解;

          2.@Autowired 注解注入bean;

          3.@PostConstruct 使用该注解定义init()方法,在方法中给当前对象赋值,@PostConstruct 注解的方法在加载类的构造函数之后执行,也就是在加载了构造函数之后,执行init方法;

     

     

    方式三:

    xml中配置bean

    <!--spring容器中配置要注入的bean -->
    <bean id="commonUtil" class="com.ambitious.CommonUtil" init-method="init"> 
         <property name="switchConfig" ref="switchConfig" />
    </bean>

    代码中引用

    @Component
    public class CommonUtils {
    
    	private static SwitchConfig switchConfig;
    
      
       /**
    	 * set方法
    	 * @param switchConfig
    	 */
    	public static void setVenderInfoService(SwitchConfig switchConfig) {
    		CommonUtils.switchConfig = switchConfig;
    	}
    	
        
        public static String getSwitchValue(String key) {
    		return switchConfig.getValue(key);
    	}
    	
    }

         

     

     

    展开全文
  • C# 静态注入实现AOP

    2016-09-02 11:23:58
    Mono.Cecil静态注入实现AOP
  • 静态注入中转突破伪静态,可以学习一下啊,比较全面了
  • 静态注入中转

    2012-10-06 03:32:28
    静态注入中转PHP版本 土司出品 方便大家测试使用
  • spring 静态注入

    2016-11-08 11:11:00
    1、静态注入 在setter 方法修改为非 static , 然后在上面注入即可 @Component public class WeixinConfig { // token public static String token = "WeiXinEnterprises"; // 随机戳 public static ...

     

     

    1、静态注入

    在setter 方法修改为非 static , 然后在上面注入即可

     

    @Component
    public class WeixinConfig {
        // token
        public static String token = "WeiXinEnterprises";
        // 随机戳
        public static String encodingAESKey = "tw8ColhrtDzU6XTHJ2shUeTyuaPQkSzdvD8jYtnTIYf";
        // 你的企业号ID
        public static String corpId = "wx54fab583808b52f1";
        // 管理组的凭证密钥,每个secret代表了对应用、通讯录、接口的不同权限;不同的管理组拥有不同的secret
        public static String secret = "X9fj3D82g83D9Fl7m0gNOl5O0lP5CSjBz6wQggiwsuhZcJx76Wu58tAMUZNCh1k6";
        // OAuth2 回调地址
        //    URLEncoder.encode("http://rainbow.idreamsky.com/", "utf-8")
        public static String redirectUri = "http://m.rainbow.idreamsky.com/qyweixin/oauth2/callback";
    
        public void setToken(String token) {
            WeixinConfig.token = token;
        }
        public void setEncodingAESKey(String encodingAESKey) {
            WeixinConfig.encodingAESKey = encodingAESKey;
        }
        
        @Value("${corp_id}")
        public void setCorpId(String corpId) {
            if(corpId != null && !corpId.equals(""))
                WeixinConfig.corpId = corpId;
        }
        
        @Value("${corp_secret}")
        public void setSecret(String secret) {
            if(secret != null && !secret.equals(""))
                WeixinConfig.secret = secret;
        }
        
        @Value("${redirect_uri}")
        public void setRedirectUri(String redirectUri) {
            if(redirectUri != null && !redirectUri.equals(""))
                WeixinConfig.redirectUri = redirectUri;
        }
    }

     

    2、 利用postConstruct 保存实例

    @Component
    public class Constants {
        public static final Integer CODE_FAILURE_VALUE = -1;
        public static final Integer CODE_SUCCESS_VALUE = 0;
    
        @Resource
        private LotteryConfigService lotteryConfigService;
    
        private static Constants constants;
        
        @PostConstruct
        public void init(){
            constants = this;
            constants.lotteryConfigService = this.lotteryConfigService;
        }
    }

     

     

     

     

    参考:

    1、 《记录问题》spring注解如何读取.properties文件数据,以及spring静态变量读取.properties文件错误

     

    转载于:https://www.cnblogs.com/xunux/p/6042230.html

    展开全文
  • Spring静态注入

    2017-08-16 01:15:53
    原文链接:... spring静态注入的三种方式: (说明:MongoFileOperationUtil是自己封装的一个Mongodb文件读写工具类,里面需要依赖AdvancedDatastore对象实例,dsForRW用来获取Mongodb数据源)


    原文链接:http://blog.csdn.net/chen1403876161/article/details/53644024


    spring静态注入的三种方式:

    (说明:MongoFileOperationUtil是自己封装的一个Mongodb文件读写工具类,里面需要依赖AdvancedDatastore对象实例,dsForRW用来获取Mongodb数据源)

    在springframework里,我们不能@Autowired一个静态变量,使之成为一个spring bean,例如下面这种方式:

    [java] view plain copy
    1. @Autowired  
    2. private static AdvancedDatastore dsForRW;  
    可以试一下,dsForRW在这种状态下不能够被依赖注入,会抛出运行时异常java.lang.NullPointerException,为什么呢?静态变量/类变量不是对象的属性,而是一个类的属性,spring则是基于对象层面上的依赖注入。
    但是自己比较喜欢封装工具类,并通过@Component注解成功能组件,但是功能组件中的方法一般都是静态方法,静态方法只能调用静态成员变量,于是就有了下面的问题。封有的时候封装功能组件会需要底层的service注入,怎么办呢?

    去网上搜了下解决办法,简单总结一下几种实现方式;

    1.xml方式实现;

    [html] view plain copy
    1. <bean id="mongoFileOperationUtil" class="com.*.*.MongoFileOperationUtil" init-method="init">  
    2.     <property name="dsForRW" ref="dsForRW"/>  
    3. </bean>  

    [java] view plain copy
    1. public class MongoFileOperationUtil {  
    2.       
    3.     private static AdvancedDatastore dsForRW;  
    4.   
    5.     private static MongoFileOperationUtil mongoFileOperationUtil;  
    6.   
    7.     public void init() {  
    8.         mongoFileOperationUtil = this;  
    9.         mongoFileOperationUtil.dsForRW = this.dsForRW;  
    10.     }  
    11.   
    12. }  
    这种方式适合基于XML配置的WEB项目;


    2.@PostConstruct方式实现;

    [java] view plain copy
    1. import org.mongodb.morphia.AdvancedDatastore;  
    2. import org.springframework.beans.factory.annotation.Autowired;  
    3.   
    4.   
    5. @Component  
    6. public class MongoFileOperationUtil {  
    7.     @Autowired  
    8.     private static AdvancedDatastore dsForRW;  
    9.   
    10.     private static MongoFileOperationUtil mongoFileOperationUtil;  
    11.   
    12.     @PostConstruct  
    13.     public void init() {  
    14.         mongoFileOperationUtil = this;  
    15.         mongoFileOperationUtil.dsForRW = this.dsForRW;  
    16.     }  
    17.   
    18. }  
    @PostConstruct 注解的方法在加载类的构造函数之后执行,也就是在加载了构造函数之后,执行init方法;(@PreDestroy 注解定义容器销毁之前的所做的操作)

    这种方式和在xml中配置 init-method和 destory-method方法差不多,定义spring 容器在初始化bean 和容器销毁之前的所做的操作;


    3.set方法上添加@Autowired注解,类定义上添加@Component注解;

    [java] view plain copy
    1. import org.mongodb.morphia.AdvancedDatastore;  
    2. import org.springframework.beans.factory.annotation.Autowired;  
    3. import org.springframework.stereotype.Component;  
    4.   
    5.   
    6. @Component  
    7. public class MongoFileOperationUtil {  
    8.   
    9.     private static AdvancedDatastore dsForRW;  
    10.       
    11.     @Autowired  
    12.     public void setDatastore(AdvancedDatastore dsForRW) {  
    13.         MongoFileOperationUtil.dsForRW = dsForRW;  
    14.     }  
    15. }  

    首先Spring要能扫描到AdvancedDatastore的bean,然后通过setter方法注入;

    然后注意:成员变量上不需要再添加@Autowired注解;

    原文链接:http://blog.csdn.net/chen1403876161/article/details/53644024

    展开全文
  • SQL注入之——伪静态注入

    千次阅读 2019-07-15 15:07:40
    1.什么是伪静态注入? 答:“伪静态”顾名思义就是一种表面上看似是静态网页(以.html、.htm等结尾),不存在任何的数据交互,却其实是动态网页,存在数据交互的网站,具有这种特性的网页成为“伪静态网页”。我们...

    1.什么是伪静态注入?

    答:“伪静态”顾名思义就是一种表面上看似是静态网页(以.html、.htm等结尾),不存在任何的数据交互,却其实是动态网页,存在数据交互的网站,具有这种特性的网页成为“伪静态网页”。我们看到的伪静态网页其实是经过处理的,将动态网页的id等参数通过URL重写来隐藏,让查看者以为是静态网页。展示出来的是以html一类的静态页面形式,但其实是用PHP一类的动态脚本来处理的。

    2.如何辨别伪静态注入的网站?

    伪静态一般URL地址格式
     1. http://test.com/php100/id/1/1
     2. http://test.com/php100/id/1.html
    非伪静态一般URL地址格式:
     1. http://test.com/php100/test.php?id=1

     伪静态是一种URL重写的技术,从而达到隐藏传递的参数以及从而达到防止SQL注入的目的。
    如果看到一个以.html或者.htm结尾的网页,此时可以通过在控制台(F12或者Fn+F12)中输入:

               javascript:alert(document.lastModified)
    

    来得到网页最后的修改时间,如果得到的时间和现在时间一致,此页面就是伪静态,反之是真静态;因为动态页面的最后修改时间总是当前时间,而静态页面的最后修改时间则是它生成的时间。

    展开全文
  • Spring静态注入Bean

    千次阅读 2019-05-05 14:53:53
    所以静态注入在使用的时候会抛出java.lang.NullPointerException空指针运行时异常 使用@PostConstruct方式: 1.对工具类使用@Component 注解 2.@Autowired 注解注入bean 3.@PostConstruct 使用该注解定义init()...
  • Spring 的静态注入

    2018-06-05 14:56:00
    在项目中,写工具类的时候用到了Servcie。...所以需要进行Spring的静态注入 private static Service service; @Autowired//必须放在setter函数前 public void setService(Service service)//这...
  • DLL注入之修改PE静态注入 0x00 前言 我们要注入的的力量功能是下载baidu首页数据。代码如下: #include"stdio.h" #include"stdio.h" #include"windows.h" #include"shlobj.h" #include"Wininet.h" #include...
  • HTML静态注入技术

    千次阅读 2017-11-23 15:07:00
    在去年12月24日那天中午,疯狗兄弟跟我说过关于HTML静态注入技术,第2天,也就是圣诞节那天,他做拉份动画。[HTML注入之入侵IT168,网易动画]。动画基本是讲解HTML静态注入的原理,做的很简单,我一直想具体再做一份...
  • 静态注入

    千次阅读 2011-06-01 21:49:00
    静态注入
  • Spring静态注入本身就已经并非最佳实践了。关于Spring静态注入存在很多争议。但是编程是神奇的,总有各种奇奇怪怪的场景让人不得不去采用这种方式。那么非得用到spring静态注入的时候,怎样做最好呢。个人觉得最好的...
  • HttpCanary使用指南——静态注入

    万次阅读 2019-03-01 17:03:18
    静态注入器需要先选定一个请求,然后对其进行预编辑,编辑完成后便可对后续的相同请求进行自动修改。 比如App发往服务器的请求为:https://test.com?city=beijing ,我们可以使用HttpCanary的静态注入器将参数值...
  • 1.YML配置文件静态注入。 name: rule: entity: $Eo url: main\java\ import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties....
  • python脚本处理伪静态注入脚本安全 电脑资料 目前有很多网站做了rewrite如 大趋势下攻击的门槛逐渐增高 实战举例 这个点存在注入 标准的显错注入 这里测试了几个工具havij 竟然测出来是oracle数据库 sqlmap safe3 此...
  • springboot 注入 / 静态注入 参数配置:application.properties sc.crm.upDirPath= 注入: spring boot 的任意组件都能使用,这里声明了一个简单组件 @Component,该注解通常用来定义一些需要配置的常量...
  • 转: spring静态注入

    2017-02-19 15:49:00
    与其说是静态注入(IOC),不如讲是对JavaBean的静态成员变量进行赋值。 一般我们在使用依赖注入的时候,如果当前对象(javaBean)创建(实例化)一次,那么非静态的成员变量也会实例化一次,用来支持当前对象的...
  • Spring静态注入的三种方式

    万次阅读 多人点赞 2016-12-14 18:48:59
    Spring静态注入的几种方式
  • spring实现静态注入(类或者属性) 场景是:工具类一般都是静态方法,静态方法只能访问静态属性。所以,我们需要静态注入类或者属性。 常规操作: 注入类或者方法: @Autowired private TestService testService; [@...
  • 记录一次伪静态注入

    2019-05-23 14:55:00
    记录一次伪静态注入 0x01:前言 偶然得到一个站,顺便练习一下手注,记录一下过程 0x02:辨别伪静态 网站url结构: 是不是类似index.php?pid=2,感觉有猫腻的话就顺手试一下。 改变url为 发现未屏蔽报错...
  • 这是一个非常好用的输入表静态注入工具,修改PE的同志用得着的。
  • sqlmap伪静态注入与携带cookie登录认证注入

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,022
精华内容 2,008
关键字:

静态注入