在ssh框架下; 一般情况下在用的地方,定义一个属性,使用@Service 与 @Autowired就可实现属性注入,如下: @Service @Autowired … … 现在我有个问题是,可否在实体类(POJO)中注入一个SomeService对象; @Autowired … … 我想要在User的某个方法中用到someService,希望用hibernate查询出所有User对象已注入了someService; 这个自动注入的功能能实现吗?有可能没有 |
|
标题有点写得不合适,反正不管是Dao或者是Service,都是说在POJO中注入一个功能类
|
|
我自己找到一个解决办法,现提交上来跟大家交流下:
首先,我想的是被注入的对象还得是从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()是会出现空指针的;因此此方法的局限应该在于需在应用启动后再初始化此实体类时才能正确将指定属性注入。 |
|
10分 |
被三层架构给毒害了,,,
Spring注入dao,注入service和注入其它的类有什么区别吗?? 没有的.Spring功能远比你现在这样用的强大. |
无法归类的bean 可以使用@Component来进行注解 写在类上 替代@Service等
而 @Repository是注解在dao上的 @Component注解接口也是spring定义出来的. |
|
注册到哪里不都是一样?
|
|
我有些不明白了,我到不是说不能注入,我是想用自动注入,就是在这个类实例化时就把它的某个类属性注入值,这应该跟dao、service不一样吧,dao之类也是由spring实例化的,但bean相当于是自己new的 |
|
这样不可以吧,bean就是用来封装数据的,比如我查询得到一个User的List,这里面的n个User实例相当于是hibernate组装的(new出来的);在bean上加@Component不起作用吧 |
|
10分 |
|
充血模型 贫血模型的问题
|
|
在实体类中注入一个Service,可以当然可以,但是这个用法觉得很别扭。
|
|
就当前这个问题,我只想到这个做法,怎么,还有些什么办法,举个例子 |
|
归根到底是这个需求它就别扭,导致解决的用法也别扭 |