Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用自定义注释实现依赖项注入_Java_Spring_Annotations - Fatal编程技术网

Java 使用自定义注释实现依赖项注入

Java 使用自定义注释实现依赖项注入,java,spring,annotations,Java,Spring,Annotations,我正在开发一个核心java框架。我不想直接在类内部创建实例,这就是我想使用依赖项注入的原因 我正在考虑在要实例化的字段上声明自定义注释。还有一个回调函数,它将创建一个实例并将其注入到字段中 我试图创建一个自定义注释。但是看起来没有直接的方法可以获得声明注释的回调。所以,我试着在课堂上浏览。但我最终遇到了这个问题 请告诉我这是否是实现这一目标的正确方法。因为您的问题被标记为“Spring”,所以您可以使用Spring框架的bean注释(@Component/@Service/@Repositor

我正在开发一个核心java框架。我不想直接在类内部创建实例,这就是我想使用依赖项注入的原因

我正在考虑在要实例化的字段上声明自定义注释。还有一个回调函数,它将创建一个实例并将其注入到字段中

我试图创建一个自定义注释。但是看起来没有直接的方法可以获得声明注释的回调。所以,我试着在课堂上浏览。但我最终遇到了这个问题


请告诉我这是否是实现这一目标的正确方法。

因为您的问题被标记为“Spring”,所以您可以使用Spring框架的bean注释(@Component/@Service/@Repository/…)、类路径扫描和@Autowired

例如:

在spring配置xml上设置类路径扫描:

<context:component-scan base-package="com.mycompany.myapp" />
使用DI+自动连接将引用注入上述DAO实例

@Service
public class FooService {

  @Autowired private FooDAO fooDAO;

  ...
}

那么谁来处理注释、创建和注入对象呢?我想知道我是否可以有回调方法来创建和注入带注释的字段。我对自定义注释没有太多经验,但我认为你无法获得注释的回调方法。一种选择是使用
AspectJ
,这样您就可以对这些类进行注释,并在一个方面发挥神奇的作用。所以,如果我尝试在我的框架中安装spring依赖项,那么将它导出到jar文件不会导致问题吗?如果您使用像Maven这样的依赖项管理工具,则不会。你可以声明你的项目需要什么依赖项,拉动项目将过渡地拉动所有这些依赖项。我通过创建一个spring项目并将其导入一个非maven项目(我的项目需求之一)来尝试一下。而且它似乎在起作用。看起来jar是自包含的,包含所有依赖项。但当我检查罐子大小时,它只有几kb!对此有合理的解释吗?
@Service
public class FooService {

  @Autowired private FooDAO fooDAO;

  ...
}