一个类继承了Thread,能用spring注入service吗 public class SocketOperate extends Thread这个类我能用spring注解注入吗?@Autowiredprivate xxxService Service;我这样写service为空,不知道怎么注入spring 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你这个需求挺怪异的,要用 spring 管理线程对象。需求能否说下?让大家看看能否有替代解决方案。 不是spring负责SocketOperate的bean的生成把, SocketOperate 加 @Component 去掉extend Thread就能注入了吗 定义成static类型的,或者定义在run方法内看看。 只要是交给spring管理的,提供了公共的无参构造方法的,都可以注入srping管理的对象,加注解@Server ,@Component,@Controller,@Component 就可以了,继承什么,实现什么都可以,或者使用配置文件加入了spring配置文件里 想在该内中调用service服务你是想在自己定义的 Thread 类中调用 Service 的某个方法吧? 想在该内中调用service服务你是想在自己定义的 Thread 类中调用 Service 的某个方法吧?是的,我找到方法了,代码如下:@Componentpublic class SpringContextUtil implements ApplicationContextAware { // Spring应用上下文环境 private static ApplicationContext applicationContext; /** * 实现ApplicationContextAware接口的回调方法,设置上下文环境 */ public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { SpringContextUtil.applicationContext = applicationContext; } public static ApplicationContext getApplicationContext() { return applicationContext; } /** * 获取对象 这里重写了bean方法,起主要作用 */ public static Object getBean(String beanId) throws BeansException { return applicationContext.getBean(beanId); }} 首先想要注入的话需要你把Thread交由Spring管理,也就是你取Thread时要通过Spring来取,这样就可以注入了. 处理完就结束,最好不要把它交给 spring 管理,用线程池管理吧。你现在没问题,是因为并发数太小,线程还没吃光你的内存和 CPU。 BlockingQueue<Runnable> queue = new LinkedBlockingQueue<Runnable>(10); ThreadPoolExecutor pool = new ThreadPoolExecutor(3, 10, 500, TimeUnit.SECONDS, queue); pool.execute(null); pool.shutdown(); 手动注入可以使用这种方式:AutowireCapableBeanFactory autowireFactory = applicationContext.getAutowireCapableBeanFactory();autowireFactory.autowireBean(processor); myeclipse swing visual plugin for MacOS 用java编写考试系统的查询共能代码?急急 急~在线等:Hibernate 映射错误~ RMI问题 小小女菜鸟请大家帮忙,如何使这段代码变得整洁呢? 高分求助!!!进者有分,基于http协议的文件断点续传功能的实现 我的Tomcat不能用了,输出如下错误 帮忙看看我的struts-config文件哪里错了? 入门级问题,请大侠指点! SSM框架报错,求解答 jquery的图片缩放 谁有soap1.1 的webservice 的demo啊
需求能否说下?让大家看看能否有替代解决方案。
加注解@Server ,@Component,@Controller,@Component 就可以了,继承什么,实现什么都可以,
或者使用配置文件加入了spring配置文件里
是的,我找到方法了,代码如下:@Component
public class SpringContextUtil implements ApplicationContextAware { // Spring应用上下文环境
private static ApplicationContext applicationContext; /**
* 实现ApplicationContextAware接口的回调方法,设置上下文环境
*/
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
SpringContextUtil.applicationContext = applicationContext;
} public static ApplicationContext getApplicationContext() {
return applicationContext;
} /**
* 获取对象 这里重写了bean方法,起主要作用
*/
public static Object getBean(String beanId) throws BeansException {
return applicationContext.getBean(beanId);
}
}
你现在没问题,是因为并发数太小,线程还没吃光你的内存和 CPU。
ThreadPoolExecutor pool = new ThreadPoolExecutor(3, 10, 500, TimeUnit.SECONDS, queue);
pool.execute(null);
pool.shutdown();
autowireFactory.autowireBean(processor);