集成 Spring、JPA

Java RESTful

  • 集成
    1. Spring

      • 依赖包

          
          
              org.glassfish.jersey.ext
              jersey-spring3
              ${jersey.version}
          
          
          
          
              org.springframework
              spring-core
              ${spring.version}
          
          
              org.springframework
              spring-web
              ${spring.version}
              compile
          
          
              org.springframework
              spring-test
              ${spring.version}
              test
          
          
              org.springframework
              spring-tx
              ${spring.version}
          
          
              org.springframework
              spring-orm
              ${spring.version}
          
        

        org.glassfish.jersey.ext 这个包是为 Jersey 扩展功能所使用的。如果要集成 Spring,使用的 Jersey 版本不要小于 2.2。

      • 依赖注入

        • @Autowired
        • @Service ,表示该类是一种作为服务的组件(@Component)

        Spring IoC 是通过配置文件[default file: applicationContext.xml]来定义的。

              default-autowire="byName" default-lazy-init="true"
        

        和容器管理 Bean 相关的配置如下:

              // 当系统启动时,Spring 会根据此配置对 package 进行扫描,将注解为 @Component 的类,以及注解为 @Service 这样本身使用了 @Component 注解的类加载.
              
        
      • 面向切面的事务管理

        将数据库事务管理交给容器。需要注意的是,JPA 的写操作需要显示地提交事务。

              
              
              
              
                  
               
        

        在写操作的方法上,使用注解 @Transactional 即可实现容器级别的 AOP 事务处理。

              @Transactional
              public void save(final Book entity) {
                  entityManager.persist(entity);
              }
              
              [
                  spring 容器启用事务的 begin 方法
                  save() 方法成功执行
                  spring 容器会 commit 此事务,否则 rollback 此事务
              ]
        
      • 集成测试

        在测试中保持 Spring 容器的存在性:

              @ContextConfiguration(locations = { "classpath:applicationContext.xml" })
              @RunWith(SpringJUnit4ClassRunner.class)
              public class TUMyServiceTest {
              ...
              }
        

        使用 @RunWith 注解利用 spring -> SpringJUnit4ClassRunner 类,使 JUnit 测试环境具备 spring 容器的功能。

      • Spring 注解

        • @Component
        • @Autowired
        • @Service ,表示该类是一种作为服务的组件(@Component)
        • @Transactional
        • @ContextConfiguration(locations = { "classpath:applicationContext.xml" })
        • @RunWith(SpringJUnit4ClassRunner.class)
    2. JPA

      JPA 2.1 是 Java EE 7 的标准之一。

      • JPA 2.1 配置
      • JPA 注解
      • MySQL 配置

你可能感兴趣的:(集成 Spring、JPA)