English 中文(简体)
How does Spring s @Autowired work with interfaces that have no implementation?
原标题:

I am working with SpringData s Neo4j graph DB hello-worlds example and I ran across the following code in WorldRepositoriesImpl.java...

@Autowired private WorldRepository worldRepository;

Furthermore, WorldRepository is defined as...

public interface WorldRepository extends MyWorldRepository, 
                                         GraphRepository<World>,
                                         NamedIndexRepository<World> 
{/* no method defined here */}

Now the odd part, no class that I can find actually implements WorldRepository.So, a few questions...

How is this possible? Where is this documented? Is there a way to make this a bit more explicit (less mysterious)?

最佳回答

Running the code with a debugger attached shows that the worldRepository instance wired up by Spring is a proxy object created at runtime.

Looking at the pom.xml and the dependencies included, it looks like the spring-neo4j library bundles in some Aspects that create this implementation class at runtime.

In other words, there is no implementation of this interface declared in the source code - but one is created at runtime with AspectJ and other tools.

IntelliJ screenshot of debugger

问题回答

暂无回答




相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签