`
pyl1164
  • 浏览: 5310 次
社区版块
存档分类
最新评论

spring 注入静态变量 报错 no property

 
阅读更多
功能描述:
    发送短信工具类:该工具类定义了静态发短信的方法,所有使用的用户名,密码都需要定义为静态,这里需要通过spring 读取配置文件注入
 
首先定义静态变量:
    private static  String host="";
    private static String username="";
    private static String password="";

下面是静态的发送短信的方法: 
  /**
     * @param host
     * @param username
     * @param password
     * @param SMSBean
     * @return
     */
    public static String [] sendSMS(SMSBean smsBean)
    {

String smsContext;
HttpMethodBase method = null;
try
{
    smsContext = URLEncoder.encode(smsBean.getContent(),"utf-8");

    String Url = "http://www.kasms.net/Api/smssend.aspx?user=" + username
+ "&pass=" + password + "&telno=1&msg=" + smsContext
+ "&mobiles=" + smsBean.getSendmobile();
    System.out.println(Url);
    HttpClient client = new HttpClient();
    method = new PostMethod(Url);
    method.setRequestHeader("Content-Type","text/html; charset=utf-8");
    method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
    new DefaultHttpMethodRetryHandler(3,false));

    int result = client.executeMethod(method);
    if(result != HttpStatus.SC_OK)
    {
System.err.println("Method failed: " + method.getStatusLine());
return new String []{"1","连接失败"};
    }

}
catch(HttpException e)
{
    System.out.println("服务器异常,请检查短信发送协议是否正确!");
    e.printStackTrace();
    return new String []{"1","连接失败"};
}
catch(IOException e)
{
    System.out.println("IO异常,系统将自动重发3次。如一直失败!请检查网络是否正常!");
    e.printStackTrace();
    return new String []{"1","连接失败"};
}
finally
{
    method.releaseConnection();
}
return new String []{"0","短信发送成功"};
    }


后面是通过spring注入bean的get,set方法
  错误就在这里:

  /**
     * @return the host
     */
    public static String getHost()
    {
return host;
    }

    /**
     * @param host the host to set
     */
    public static void setHost(String host)
    {
SMSTools.host = host;
    }

这里和平时的一看就不同,没有研究源码,应该是spring在读get,set方法时没有识别出来!

改成
  /**
     * @return the host
     */
    public  String getHost()
    {
    return host;
    }

    /**
     * @param host the host to set
     */
    public  void setHost(String host)
    {
    SMSTools.host = host;
    }
确行了...
分享到:
评论

相关推荐

    Spring不能注入Static变量的原因及Spring注入静态变量

    然而,Spring并不支持直接注入静态变量,这主要是由于静态变量的特性与依赖注入的设计原则相冲突。 首先,让我们了解一下为什么Spring依赖注入通常不适用于静态变量。静态变量属于类级别,而不是对象级别,这意味着...

    Spring Boot使用Value注解给静态变量赋值的方法

    在 Spring Boot 框架中,我们经常需要将配置文件中的值注入到静态变量中,但是默认情况下,Spring Boot 不支持将值注入到静态变量中。这是因为静态变量是属于类的,而不是实例的,而 Spring Boot 的注入机制是基于...

    springboot无法从静态上下文中引用非静态变量的解决方法

    解决办法是使用spring的set注入方法来将非静态变量注入静态变量。下面是一个示例代码: ```java @PropertySource(value = {"classpath:config/application.yml"}, ignoreResourceNotFound = true, encoding="UTF-8...

    Spring选择题(含答案).doc

    静态方法:静态方法不能用于依赖注入,因为静态方法不能访问非静态成员变量。 4. 在 Spring 中,applicationContext.xml 文件可以配置 Bean 的作用域,例如,prototype 作用域表示每次请求 Bean 时都会创建新的...

    知识共享-spring属性注入(雷惊风).

    该工厂Bean用于获取类的静态变量,并将其注入到其他Bean的属性中。例如,在`CarBrandType`接口中定义了两个常量`HONG_QI`和`JI_LI`,然后通过配置`FieldRetrievingFactoryBean`来获取这些常量,并将其注入到`Car`类...

    spring annotation注解

    * @Autowired 注解不能用于静态成员变量。 5. 结论 使用 Spring 注解可以简化属性的注入过程,提高代码的可读性和维护性。在使用 @Autowired 注解时,需要注意其使用限制和注意事项,以确保正确使用。

    Spring学习思维导图

    注入是指将对象的成员变量赋值的过程。Spring中有多种注入方式,如set注入、构造注入、数组注入、集合注入等。set注入是指通过类的set方法来赋值,构造注入是指通过类的有参构造方法来赋值。 五、控制反转和依赖...

    Spring-Reference_zh_CN(Spring中文参考手册)

    6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1. @Configurable object的单元测试 6.8.1.2. 多application context情况下的处理 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来...

    Spring配置及简单实例

    在Java代码中,`ExampleService`类有一个`Dependency`类型的成员变量,通过setter方法注入依赖: ```java public class ExampleService { private Dependency dependency; @Autowired public void ...

    简单学习使用Spring+Velocity发送邮件

    这样,当发送邮件时,Spring会使用这些模板并替换变量,生成最终的邮件内容。 为了在Spring中集成Velocity,我们需要添加以下依赖: 1. `velocity-engine-core`:Velocity的核心库。 2. `velocity-tools-view`:...

    JavaEE Spring IoC注解

    6. **Property Injection**:`@Value` 注解可以用来注入静态值,包括字符串、数字、布尔值等,甚至可以从环境变量或系统属性中获取值。 7. **Aspect-Oriented Programming (AOP)**:虽然不是IoC的一部分,但Spring ...

    自已实现spring ioc功能代码 jdk1.6的一些新特性

    使用JDOM解析`<property>`标签,将属性值注入到Bean中。这可能涉及到反射API,如`Class.forName()`和`Constructor.newInstance()`,以及`Field`类的`set()`方法。 5. **Java 1.6的新特性** Java 1.6引入了一些新...

    spring3.0.2api 文档spring表达式语言

    Spring框架是Java开发中不可或缺的一部分,它以其模块化、松耦合和强大的依赖注入特性而闻名。Spring 3.0.2是该框架的一个稳定版本,提供了许多改进和新功能。在本文中,我们将深入探讨Spring 3.0.2 API文档中的核心...

    开发工具 spring-expression-4.3.6.RELEASE.rar

    `T()`用于引入静态类型,`#`字符后的`root`变量可以访问bean。例如,`#{root.name}`可以获取当前上下文中的bean的name属性。 在4.3.6.RELEASE版本中,SpEL增加了对Java 8新特性的支持,包括日期时间API(java.time...

    spring mvc

    1. **排除静态资源路径**: 在Spring MVC配置文件中,使用`<mvc:resources>`标签指定静态资源的映射路径。 2. **使用Restful风格的路由**: 通过`@RequestMapping`注解指定路径变量和HTTP方法。 综上所述,Spring MVC...

    Maven 搭建Spring + SpringMVC.rar

    创建`src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml`,配置SpringMVC的细节,如视图解析器、静态资源路径等。 ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...

    Spring MVC + Tiles + FreeMarker 的整合

    同时,它支持依赖注入,使得业务对象可以通过Spring容器获得依赖,从而简化了代码。 **Tiles** Tiles框架是Apache Struts项目的一部分,主要负责处理视图层的构建。Tiles允许开发者定义页面模板,这些模板可以被多...

    spring4.0 Configuration的使用.docx

    - **实现方式**:Spring 支持从外部文件读取配置值,并通过 `@Value` 注解将这些值注入到 Bean 中。 ```java @Value("${property.name}") private String propertyName; ``` 通过以上介绍可以看出,在 Spring ...

    SpringValue注解

    在上面的代码中,我们使用 @Value 注解将 ftp.name 配置项的值注入到 ftpName 变量中。在这里,ftp.name 是 properties 文件中的一个键,${ftp.name} 是使用 EL 表达式来读取 properties 文件中的值。 注意事项 1....

Global site tag (gtag.js) - Google Analytics