我正在使用Hibernate,Spring& JSF用于应用程序。 我实际上是使用带有Jersey(JAX-RS)的Restfull WebService来开发应用程序。为了那个需要,我用@Component注释了我的班级。在这个类中,我需要调用一个服务来从数据库中抓取一些东西。
@Component
@Path("/Graphic")
public class GraphicService {
//@Autowired //@Inject
//ParticipantBo participantBo;
or
//@ManagedProperty("#{participantBo}")
//private ParticipantBo participantBo;
我在教程中遇到了一些我不了解/理解其含义的注释。 所以我想检查整个应用程序的配置是否正常,或者我是否可以清理一些东西。
大多数情况下,我使用@ ManagedProperty Annotation在我的类中使用@ManagedBean注释一个依赖项(一个调用然后调用Dao的ServiceBO)。
@ManagedBean(name="participantController")
@ViewScoped
public class AddParticipantBean implements Serializable{
private static final long serialVersionUID = -6952203235934881190L;
@ManagedProperty(value="#{participantBo}")
ParticipantBo participantBo;
}
我有一个applicationContext.xml文件,我用这种方式声明我的所有类:
<!-- Participant Data Access Object -->
<bean id="participantDao" class="X.X.X.dao.participant.ParticipantDaoImpl" >
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- Participant Business Object -->
<bean id="participantBo" class="X.X.X.bo.participant.ParticipantBoImpl" >
<property name="participantDao" ref="participantDao" />
</bean>
我的配置做得好吗?我可以不同地配置应用程序吗? ,也许没有xml声明?使用@ 注入或@ AutoWired 可能吗?但他们的用例是什么?
答案 0 :(得分:0)
我更喜欢使用Java EE提供的标准。而且我也更喜欢直接注释setter而不是属性。使用这种方式更容易开始进行单元测试(并模拟这些对象)。另请查看我的回答here
例如,您的类GraphicService将是这样的:
@Component
@Path("/Graphic")
public class GraphicService {
ParticipantBo participantBo;
@Resource
public void setParticipantBo(ParticipantBo participantBo){
this.participantBo = participantBo;
}
的更多信息
希望它有所帮助。