Java 如何在可以在spring上下文之外调用方法的类中使用自动关联
将我的web应用程序转换为Spring。自动连线在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;
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
}
}