解决方案 »
- struts2 json 前台传一个集合类型的json数据后台接受不到
- @hibernate.query 配置问题
- ActiveMQ如何做集群,谁有文档可以提供啊
- 有高手吗,服务器转移中一个很急迫的问题需要解决
- javamail使用代理服务器发邮件的问题
- 为什么我的系统里运行j2ee or javaee命令时系统提示是“无效命令”?
- DispatchAction使用时碰到的问题
- [求助]Apache2与Tomcat4的整合问题? 急!
- Jboss中配多个域名对多个目录
- 关于java中脚本识别的问题,求助大神
- Tom卡在这里无法解决 信息: No Spring WebApplicationInitializer types detected on classpath
- SSH框架,action的scope设置为prototype一个奇怪问题,求解
首先,我想的是被注入的对象还得是从spring的容器里取,就是取spring已经初始化好的实例,所以我写了个外部函数,用来通过实例名来取实例,外部函数是这么写的:package com.XXX.learn.control.utils;import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Repository;
@Repository
public class SpringUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext context) throws BeansException {
SpringUtil.applicationContext = context;
}
public static Object getBean(String name){
return applicationContext.getBean(name);
}
/**
* 成功获取到ApplicationContext对象时返回true;反之则返回false
*/
public static Boolean isReady() {
return SpringUtil.applicationContext != null;
}
}
第二步,在实体类中如此写:public class User { private ISomeService someService; public User() {
System.out.println("========================>User 被创建");
if(SpringUtil.isReady()) {
this.someService = (ISomeService) SpringUtil.getBean("someService");
}
}
//省略其他... ...
}
之所以要用isReady,是因为在应用启动时,在SpringUtil.applicationContext还未被注值时,调用getBean()是会出现空指针的;因此此方法的局限应该在于需在应用启动后再初始化此实体类时才能正确将指定属性注入。
Spring注入dao,注入service和注入其它的类有什么区别吗??
没有的.Spring功能远比你现在这样用的强大.
而 @Repository是注解在dao上的
@Component注解接口也是spring定义出来的.
我有些不明白了,我到不是说不能注入,我是想用自动注入,就是在这个类实例化时就把它的某个类属性注入值,这应该跟dao、service不一样吧,dao之类也是由spring实例化的,但bean相当于是自己new的
像你那种方式肯定可以,不过奇怪的是为什么有这种奇怪的写法。同样的需求应该可以有很多种方式来实现吧。