将我的 Web 应用程序转换为 Spring。自动装配在它在 Spring 上下文中启动但在其他情况下失败的情况下是成功的,因为它应该。
我有一个MangaBean
名为genre
. 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;
}
}
}
该实用程序调用从表中获取一组流派并验证提供的流派的方法。
@Component
public class MangaUtil{
@Autowired
MangaDao mDao;
public static boolean verifyGenre(String genre){
List<String> genres=mDao.getGenresList(); //null pointer exception
//do validations
}
}
MangaDao
包含一个NamedParameterJDBCTemplate
从数据库中获取流派的自动连线。
MangaDao的代码:
@Repository
public class MangaDao{
@Autowired
private NamedParameterJdbcTemplate template;
public List<String> getGenresList(){
String query="select genres from manga_table";
Map<String,String> paramMap=new HashMap<String, String>();
return template.queryForList(query, paramMap, String.class);
}
}
在上述安排中,当我自动装配 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 中使用自动装配,那么在我自己实例化 bean 的情况下,自动装配会失败MangaBean mb=new MangaBean()
。请对这种情况提出建议。我想从我的 bean 调用验证器方法,而 bean 本身没有任何自动装配。可能吗?. 如果没有,有什么方法可以存储流派列表并在 bean 中使用它来验证我的数据。请指教。