Java 如何在可以在spring上下文之外调用方法的类中使用自动关联

Java 如何在可以在spring上下文之外调用方法的类中使用自动关联,java,spring,Java,Spring,将我的web应用程序转换为Spring。自动连线在Spring上下文中启动但在其他情况下失败的情况下是成功的,这是应该的 我有一个MangaBean,它有一个名为genre的属性。体裁的价值应该是例外体裁中的一种。我已经将验证放在bean本身中。大概是这样的: @Component public class MangaBean{ private String title; private String author; private String isbn;

将我的web应用程序转换为Spring。自动连线在Spring上下文中启动但在其他情况下失败的情况下是成功的,这是应该的

我有一个
MangaBean
,它有一个名为
genre
的属性。体裁的价值应该是例外体裁中的一种。我已经将验证放在bean本身中。大概是这样的:

    @Component
public class MangaBean{
    private String title;
    private String author;
    private String isbn;
    private String genre;

    //getters

    public void setTitle(String title){
        //validations
    }

    public void setGenre(String genre){
        boolean result=MangaUtil.verifyGenre(genre);
        if(result){
            this.genre=genre;
        }else{
            this.genre=null;
        }
    }
}
util调用从表中获取一组类型并验证所提供类型的方法

@Component
public class MangaUtil{
    @Autowired
    MangaDao mDao;

    public static boolean verifyGenre(String genre){
        List<String> genres=mDao.getGenresList();   //null pointer exception 
            //do validations
    }
}
在上述安排中,当我自动连接MangaUtil时,对MangaUtil的调用也可以正常工作。例如:

@Component
public class MangaBean{
    @Autowired
    MangaUtil mangaUtil;
    private String title;
    private String author;
    private String isbn;
    private String genre;

    //getters

    public void setTitle(String title){
        //validations
    }

    public void setGenre(String genre){
        boolean result=mangaUtil.verifyGenre(genre);
        if(result){
            this.genre=genre;
        }else{
            this.genre=null;
        }
    }
} 

但是如果我在bean中使用autowiring,在我自己实例化bean时,autowire会失败,比如
MangaBean mb=newmangabean()
。对于这种情况,请给出建议我想从我的bean调用validator方法,而不需要在bean本身中进行任何自动连接。可能吗?。如果没有,我是否可以存储一个类型列表,并在bean中使用它来验证我的数据。请注意。

默认情况下,自动连线仅适用于Spring管理的bean,即由Spring创建的bean。要使其适用于使用例如
new
实例化的bean,请参阅Spring文档:


您需要根据文档使用@Configurable annotation并配置AspectJ。

可能不是您问题的真正答案。但我想知道你是如何编译这段代码的:

@Component
public class MangaUtil(){ // <<< parentheses not allowed here
    @Autowired
    MangaDao mDao;

    public static boolean verifyGenre(String genre){
        List<String> genres=mDao.getGenresList();   // <<< you are referencing a non static attribute from a static method
    }
}
@组件
公共类MangaUtil(){//
@Component
public class MangaUtil(){ // <<< parentheses not allowed here
    @Autowired
    MangaDao mDao;

    public static boolean verifyGenre(String genre){
        List<String> genres=mDao.getGenresList();   // <<< you are referencing a non static attribute from a static method
    }
}