2016-07-05 27 views
0

我試圖與EntityManager的,它給錯誤EntityManager的使用AspectJ不工作

org.springframework.beans.factory.BeanCreationException: 
    Error creating bean with name 
    'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration', 
    Add a provider like Hibernate Validator (RI) to your classpath. 

POM的AspectJ:

<parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.3.5.RELEASE</version> 
     <relativePath/> <!-- lookup parent from repository --> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <java.version>1.7</java.version> 
    </properties> 
    <dependencies> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-aop</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.aspectj</groupId> 
      <artifactId>aspectjrt</artifactId> 
      <version>1.6.12</version> 
      <scope>runtime</scope> 
      <!-- <version>1.8.0</version> --> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.aspectj</groupId> 
      <artifactId>aspectjweaver</artifactId> 
      <!-- <version>1.8.0</version> --> 
     </dependency> 

     <dependency> 
      <groupId>com.jcabi</groupId> 
      <artifactId>jcabi-aspects</artifactId> 
      <version>0.22.5</version> 
     </dependency> 
     <dependency> 
      <groupId>com.microsoft.sqlserver</groupId> 
      <artifactId>sqljdbc4</artifactId> 
      <version>4.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 

    </dependencies> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
      <plugin> 
       <groupId>com.jcabi</groupId> 
       <artifactId>jcabi-maven-plugin</artifactId> 
       <executions> 
        <execution> 
         <goals> 
          <goal>ajc</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 

驅動程序:

@SpringBootApplication 
@ComponentScan(basePackages = "aspect.*") 
@EnableAspectJAutoProxy 
@Configuration 
@EntityScan(basePackages ="aspect.*") 
public class Application{ 

    public static void main(String[] args) { 
     ApplicationContext context = SpringApplication.run(Application.class, args); 

     try { 
      Service service=context.getBean(Service.class); 
      service.save(); 

     } catch (RuntimeException e) { 
      System.out.println("Caught runtime exception"); 
     } 
    } 
} 

服務類:

@Component 
public class Service{ 

    @Autowired 
    EntityManager entityManager; 

    @Transactional 
    public void save() { 
     System.out.println("Before Invocation"); 
     entityManager.persist(new Employee("009", "sunitha", "Lead")); 
     System.out.println("after persist call"); 
} 

看點:

@Aspect 
    @Component 
    public class AuditAspect { 

     @Around("execution(* javax.persistence.EntityManager.persist(..)) && @annotation(loggable)") 
    public Object aroundServce(ProceedingJoinPoint joinPoint, Loggable loggable) throws Throwable{ 
    long start = System.currentTimeMillis(); 
     // System.out.println("start--> "+start); 
     Object result = joinPoint.proceed(); 
     Logger.info(this, "info %s just called", MethodSignature.class.cast(joinPoint.getSignature()).getMethod().getName()); 
     return result; 
    } 

    } 

application.properties:

spring.jpa.show-sql=true 
spring.jpa.hibernate.ddl-auto=update 

需要知道在哪裏做錯了?

+0

正如消息所說......它需要一個CLASSPATH中的Bean驗證API提供程序(Hibernate Validator或Apache BVAL),那麼按照說法說吧? –

+0

謝謝親愛的。它的工作將後.. org.hibernate作爲 休眠核心 4.3.11.Final 編譯 org.hibernate作爲 冬眠,驗證 4.3.2.Final mammam

+0

@NeilStockton隨意將該評論轉換爲答案,並獲得一些代表。 –

回答

0

正如消息所說......它需要一個Bean驗證API(JSR 303)提供程序。如果你在你的CLASSPATH中放置了一個像Hibernate-Validator或Apache BVAL這樣的提供者,我希望消息消失。