如何在没有任何.xml配置的情况下使用spring 3.X注释

2024-01-16

我是 Spring 新手,我不喜欢使用 .xml 作为 spring 配置。所以我只想使用注释。以下是我的测试代码,它在没有 spring 的情况下运行良好,但是如果我使用 DI 并添加注释“@Resource”,我会得到 NullPointException,任何人都可以帮忙解决它,非常感谢。

我已经导入了相关的 spring 罐子。这是一个生产者-消费者的情况,我想将资源池注入生产者和消费者。

生产者.java

import javax.annotation.Resource;

public class Producer implements Runnable{
    @Resource
    private ResourcePool qs;

    @Override
    public void run() {
        while (true) {
            for(int i = 0;i < Integer.MAX_VALUE; i++) {
                try {
                    qs.produce(i);
                    System.out.println("Add index = " + i);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

消费者.java

import javax.annotation.Resource;

public class Consumer implements Runnable {
    @Resource
    private ResourcePool qs;

    @Override
    public void run() {
        while(true) {
            for (int i = 0; i < 5; i++) {
                try {
                    System.out.println("Remove index = " + qs.comsume());
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

资源池.java

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;

public class ResourcePool {
    private BlockingQueue<Integer> aBlockingQueue  = new ArrayBlockingQueue<Integer>(11);

    public void produce(Integer ins) throws InterruptedException{
        aBlockingQueue.put(ins);
    }

    public int comsume() throws InterruptedException{
        return aBlockingQueue.take();
    }
}

主要功能

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class TestPC {
    public static void main(String[] args){
        ExecutorService aExecutor = Executors.newFixedThreadPool(2);

        Producer productor = new Producer();
        Consumer consumer = new Consumer();
        aExecutor.execute(productor);
        aExecutor.execute(consumer);
    }
}

异常消息:

线程“pool-1-thread-2”中的异常 java.lang.NullPointerException 在 testbq.Consumer.run(Consumer.java:14) 处 java.util.concurrent.ThreadPoolExecutor.runWorker(来源未知)位于 java.util.concurrent.ThreadPoolExecutor$Worker.run(来源未知) java.lang.Thread.run(未知来源)线程中的异常 “pool-1-thread-1”java.lang.NullPointerException at testbq.Producer.run(Producer.java:14) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(来源未知)位于 java.util.concurrent.ThreadPoolExecutor$Worker.run(来源未知) java.lang.Thread.run(来源不明)

Thanks


在搜索“XML-less Spring 配置”或基于Java的Spring配置 http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/beans.html#beans-java您可能应该在几分钟之内自己就弄清楚了。

您还没有定义任何由带有注释的类托管的 bean 创建方法@Configuration- 所以Spring能够知道你真正想要注入什么。

@Configuration
// optional @ComponentScan(basePackages = {"name.your.package.here"}
public class AppConfig
{
    @Bean // or @Bean(name = "nameOfYourBean")
    public ResourcePool getResourcePool() 
    { 
        return new ResourcePool(); 
    }
}

在你的 main 方法中,你应该创建一个 Spring 上下文并将你的 AppConfig 加载到你的上下文中:

AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfic.class);

HTH

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在没有任何.xml配置的情况下使用spring 3.X注释 的相关文章

随机推荐

  • 使用 java 8 将逗号分隔的字符串列表映射到列表

    我有一个逗号分隔字符串的列表 List format
  • 为什么 MQL4 OrderModify() 在回测时不会修改订单?

    I m trying to ADD a stop loss to my open market orders in MetaTrader 4 when a position gets 100 pips to the good which i
  • 在spring mvc中删除url重写中的jsessionid

    我正在使用 spring MVC 并且在 jsessionid 中遇到问题 我发现如果浏览器中未启用 cookie 则会将 jsessionid 注入到 url 中 从而生成如下 url http localhost categories
  • 如何更改 ViewController 之间的 segue 速度

    可以控制segue速度吗 我查过文档 但苹果没有给出任何方法 但我更喜欢寻找侵入并更改较低级别代码以进行继续的想法慢动作 下面的代码是自定义segue 你可以设置duration代码中的转换 void perform UIViewContr
  • 在.Net 4.0中调试mscorlib

    我从 mscorlib 中的 System IO Path CheckInvalidPathChars 收到以下异常 ArgumentException 非法字符 在路径中 System IO Path CheckInvalidPathCh
  • 这段代码中间接如何工作?

    我正在阅读答案合并两个已排序的链表 https stackoverflow com questions 2348374 merging two sorted linked lists rq 1 代码 define SWAP PTRS a b
  • 如何强制 net.tcp mex 端点 (mexTcpBinding) 参与端口共享?

    我有一个作为 Windows 服务托管的 WCF 服务 我们希望在同一地址启用 mex 端点 但带有 mex 后缀 我一直在尝试使用以下配置来执行此操作 未成功
  • 为什么虚函数没有被调用?

    GUITEXT class guitext public entity public guitext graphics gfx std string text float x float y float size float timeToL
  • 面向 Web 开发人员的 Windows Azure 与 Amazon EC2

    我刚刚观看了 Windows Azure 介绍视频 它让我感觉它是托管 IIS 实例的前端 shell 任何了解更多信息的人 可能是测试版的一部分 是否可以解释为什么您会使用它而不是 EC2 它看起来很简单 但实际上没有详细说明它是如何工作
  • Temporal 或 Uber Cadence 中子工作流程的良好用例是什么?

    我试图了解 Temporal Uber Cadence 子工作流程的用例 与简单地将工作流程拆分为函数相比 子工作流程有什么优势 我有一个相当复杂的工作流程 我正在考虑将其拆分为多个子工作流程 但我不确定这样做的利弊 子工作流可以由不包含父
  • 如何在Delphi 2010下设置泛型类型的前向声明?

    我遇到了一个似乎非常经典的问题 一个项目和一个集合类 两者都互相引用 需要前向声明 我正在使用 Delphi 2010 更新 5 这适用于非泛型类 但我无法解决泛型类型的 E2086 错误 type Forward declarations
  • 在 Mathematica 中自动生成和

    这是我在实现的过程中遇到的一个设计问题广义分配律 https citeseerx ist psu edu viewdoc summary doi 10 1 1 125 8954 假设需要自动生成如下形式的表达式 source yarosla
  • 为什么在数字化示例中 numpy 比 matlab 慢得多?

    我正在比较性能numpy 与 matlab 对比 在某些情况下 我观 察到 numpy 明显慢一些 索引 数组上的简单操作 如绝对值 乘法 求和等 让我们看一下下面的例子 这个例子有点引人注目 涉及到函数digitize 我计划用它来同步时
  • log4j 日志记录层次结构顺序

    log4j 日志记录的层次结构是什么 DEBUG INFO WARN ERROR FATAL 哪一个提供最高的日志记录 这有助于解决问题 任何人都可以提供从最高到最低进行日志记录的顺序或层次结构吗 谢谢 这张表可能对您有帮助 沿着第一列 您
  • iOS 8 数字转换/格式错误? (无法重现)

    以下方法从 UITextField 获取输入并设置其格式以供显示 该代码多年来一直完美运行 但刚刚在使用 iOS 8 1 的 iPhone 6 Plus 上报告了一个问题 对于用户来说每次都会发生这种情况 但我无法重现它 我相信这与 iOS
  • 为什么php命令行无法获取ip地址?

    我的 var www read php 中只有一行 并在本地计算机 127 0 0 1 上构建我的灯 echo SERVER REMOTE ADDR 当输入 127 0 0 1 read php 时 我得到输出 127 0 0 1 何时在控
  • scipy curve_fit 无法拟合 tophat 函数

    我正在尝试将高帽函数拟合到某些数据 即 f x 对于整条实数线来说是常数 但有限长度的一段除外 它等于另一个常数 我的参数是 tophat 函数的两个常量 中点和宽度 我尝试使用 scipy optimize curve fit 来获取所有
  • Go 依赖于 C 运行时吗?

    我找不到 Go 依赖于 C 运行时的信息吗 如果依赖的话 是否静态编译成二进制文件 使得Go编写的应用程序可以在任何地方运行而无需依赖 这里的主题是关于什么是 C 运行时 https stackoverflow com questions
  • Android Java 文本转语音查看额外字符串信息

    我已经浏览了许多适用于 Android 的文本到语音示例 并且我遇到了一个我认为非常简单的问题 但我一生都无法解决它 我只是希望能够查看 EXTRA AVAILABLE VOICES 的输出 例如 根据这个链接 http developer
  • 如何在没有任何.xml配置的情况下使用spring 3.X注释

    我是 Spring 新手 我不喜欢使用 xml 作为 spring 配置 所以我只想使用注释 以下是我的测试代码 它在没有 spring 的情况下运行良好 但是如果我使用 DI 并添加注释 Resource 我会得到 NullPointEx