2017-01-31 10 views
0

をカスタマイズする私は、これは私のリポジトリである私は、保存方法を追加したいたとえば私のリポジトリにカスタマイズ動作を追加し、私の実体を記録したい:リポジトリ行動春ブーツ

@Repository 
public interface BookRepository extends JpaRepository<Book, Long>, BookRepositoryCustom { 

    Book findByTitle(String bookName); 

} 

、これが私のカスタムレポです:

public interface BookRepositoryCustom { 

    void saveAndLog(Book book); 
} 

、これは実装です:

@Repository 
public class BookRepositoryCustomImpl implements BookRepositoryCustom { 

    private static Logger logger = LoggerFactory.getLogger(BookRepositoryCustomImpl.class); 

    @Autowired 
    private EntityManager entityManager; 

    @Override 
    @Transactional 
    public void saveAndLog(Book book) { 

     logger.debug("saving the book entiry "+book.toString()); 
     entityManager.persist(book); 
    } 
} 

、これが私の主な方法です。

public static void main(String[] args) { 
    ApplicationContext context = SpringApplication.run(SpringDataTestApplication.class, args); 
    BookRepository repo = context.getBean(BookRepository.class); 
    Book book = new Book(); 
    book.setTitle("dynamic book"); 
    repo.saveAndLog(book); 
} 

すべてのことは大丈夫だと思われますが、アプリケーションの不具合がクラッシュして動作しません。私は自分のカスタムリポジトリについてbootspringに伝えるべきか、それとも自動的にスキャンされるのだろうかと思います。

答えて

1

名前BookRepositoryImplなくBookRepositoryCustomImplであなたの実装クラスを書く:

@Component 
    public class BookRepositoryImpl implements BookRepositoryCustom { 
    ....... 
    } 

ます。また、ドキュメントを参照してくださいすることができます

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.custom-implementations

+0

春ブーツ内の設定の必要がないと思われ。ありがとう – Kenji

+0

@Kenji、ブートに特化した設定は必要ありません –

+0

@Kenji、私は自分の答えを編集して、 –