SpingMVC JPA2 annotation description

来源:互联网 发布:无法加入emule网络 编辑:程序博客网 时间:2024/06/05 11:24

在网上找到很多关于SpringMVC的全注解的项目,但是或多或少有点毛病。其中最关键的毛病存在于事务处理这一块,不论是使用AOP的方式还是用Transactional的方式,事务都无法生效,而且程序也不报错。

 

这个问题存在于注解扫描,MVC应用会有一个对应的MVC.xml的配置文件,我这里暂时称为:dispatcher.xml

系统在初始化时,最后会通过org.springframework.web.servlet.DispatcherServlet 这个servlet来启动,在dispatcher.xml中,一般都会有描述信息,需要把Controller都扫描出来。

正是因为这个扫描,@Service的所有的注解都会失效。所以导致事务失效了。

 

解决这个问题很简单,扫描的时候增加一个filter就可以了。

<!-- 注解探测器 -->
    <context:component-scan base-package="cn.system">
    <!-- 
        MVC模式中不在扫描Service的注解信息,以防事务不启作用
    -->
       
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
       
    </context:component-scan>

 

 

这个毛病找了好几天,本来还打算用手动事务来驱动算了,不过我猜想就是标签注解的问题,在自己的耐心下终于解决了。

 

接下来就可以搞Spring Security了,之前还有很多篇文章都没有更新,例如:spring MVC系列,只能等到以后有时间了。

 

当爹了,更加忙了~~~

以上是项目的基本配置图,打了红框的没任何信息,因为已经使用了注解.

在这里顺便讲下注解的使用

注解标签:

  1. @Repository     一般用在Dao层
  2. @Service           一般用在Service层
  3. @Controller      一般用在逻辑控制层
    @RequestMapping("/user")   映射的url地址
  4. @Resource      注入标签,不需要在写getter 和setter  jdk1.6以上的版本都有这个标签
  5. @ExceptionHandler(Exception.class)   错误捕捉的标签
  6. @PostConstruct     构建式的标签,在初始化的时候非常有用  比如注入:super.setEntityManagerFactory(entityManagerFactory);
  7. @Autowired     也是注入标签,和@Resource的用法一样,这个标签是属于Spring自己的。

 

原创粉丝点击