Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using @Repository-style exception translation from Spring Java configuration

If I want to declare a bean using Spring 3's Java-based configuration, I can do this:

@Configuration
public class MyConfiguration {
    @Bean
    public MyRepository myRepository() {
        return new MyJpaRepository();
    }
}

But, since I can't use the @Repository annotation in this context, how do get Spring to perform exception translation?

like image 318
hertzsprung Avatar asked Apr 21 '11 13:04

hertzsprung


1 Answers

Declare your MyJpaRepository class as a repository:

@Repository
public class MyJpaRepository {
  ...
}

And make sure you have your annotations discoverable by setting up the component-scan element in your Spring configuration:

<context:component-scan base-package="org.example.repository"/>

Since you do not want your repository included in the annotation scan per your comments, filter it out either by excluding all @Repository annotations or your particular class(es) or package. There is an example of this in the documentation:

<context:component-scan base-package="org.example.repository">
  <!-- use one or the other of these excludes, or both if you *really* want to -->
  <context:exclude-filter type="regex" expression="*Repository"/>
  <context:exclude-filter type="annotation"
                          expression="org.springframework.stereotype.Repository"/>
</context:component-scan>

The Spring 3.0 documentation describes this configuration in more detail in section 3.10.

By configuring your class as a Repository, it will be designated as one when you pull it out as a Bean in your Configuration class.

like image 156
climmunk Avatar answered Sep 22 '22 16:09

climmunk