了解弹簧和注释,我有什么在我的xml配置文件中连线

时间:2011-11-20 20:38:47

标签: java hibernate spring

我有点困惑,在我的servlet-context.xml中我有:

 <context:component-scan base-package="com.myapp" />

  <mvc:annotation-driven />

所以上面似乎自动连接我的控制器,服务类等。

我正在使用hibernate,我仍然需要为我拥有的每个实体编写一个新的xml条目,这是正确的吗?

<hibernate-configuration>
    <session-factory>

        <mapping package="com.myapp.core.model"/>

        <mapping class="com.myapp.core.model.User"/>
        <mapping class="com.myapp.core.model.Product"/>


    </session-factory>

</hibernate-configuration>

对于像UserDao这样的每个EntityDao类,我都需要添加:

<bean id="userDao" class="com.myapp.core.doa.UserDaoImpl">
    <property name="sessionFactory" ref="sessionFactory"/>
</bean>

上述2(entity和entityDao)是否可以自动连接,因此我不必触摸xml文件?

另外,我正在关注maven / pom项目的示例,我在我的pom.xml中有这个,这是否意味着spring将使用javax.inject作为其依赖注入引擎?

    <dependency>
        <groupId>javax.inject</groupId>
        <artifactId>javax.inject</artifactId>
        <version>1</version>
    </dependency>

更新

我的UserDaoImpl看起来像:

@Repository
public class UserDaoImpl extends GenericDaoImpl<User, Integer> implements UserDao {

    @Resource
    SessionFactory sessionFactory;

我也尝试了这个并得到了相同的结果:

@Resource
private SessionFactory sessionFactory;

1 个答案:

答案 0 :(得分:2)

弹簧

可以指示Spring使用注释。您可以再次使用@Autowired等原生注释或@Resource@Inject等标准注释。以下是您可以做的事情:

@Repository
class UserDaoImpl {

    @Resource
    private SessionFactory sessionFactory;

    //...

}

事实上,还没有发布Spring 3.1,你可以编写整个Spring / MVC / Hibernate应用程序,甚至没有一行XML。在这里查看我的小showcase

休眠

您可以使用annotations并指示Spring / Hibernate选择它们。 Hibernate具有本机注释,但首先尝试使用标准JPA。

再一个简单的例子:

@Entity
class User {

    @Id
    private String name;

    @OneToMany
    private Set<Product> products;

}