我想从Spring Boot Application将Hashmap的值传递给CLI。我收到一个空指针异常。请让我知道这是怎么回事?
应用程序类
@SpringBootApplication
@ComponentScan(basePackages = { "com.xyz.movie*"})
public class Application implements CommandLineRunner{
@Autowired
private Environment environment;
@Autowired
ApplicationContext context;
@Autowired
MovieCollections movieCollections;
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
public void run(String... arg0) throws Exception {
try {
Customer customer = new Customer();
// MovieCollections collections = (MovieCollections) context.getBean("movieCollections");
Scanner sc = new Scanner(System.in);
if(movieCollections==null) {
System.out.println("it is null");
}
else
{
System.out.println("it is NOT null");
System.out.println(movieCollections.getMovieCollectionMap());
}
System.out.println("Select Movie: ");
**// NULL POINTER HERE**
for(String s:movieCollections.getMovieCollectionMap().values()) {
System.out.println(s);
}
MovieCollections类
@EnableConfigurationProperties
@PropertySource(value ="application.properties")
@ConfigurationProperties(prefix="movies")
public class MovieCollections {
private Map<String, String> movieCollectionMap;
public Map<String, String> getMovieCollectionMap() {
return movieCollectionMap;
}
public void setMovieCollectionMap(Map<String, String> movieCollectionMap) {
this.movieCollectionMap = movieCollectionMap;
}
MovieCollectionsBean.java
@Configuration
public class MovieCollectionBean {
@Bean
public MovieCollections getMovieCollections() {
return new MovieCollections();
}
}
applications.properties
movies.M1001=SpiderMan
movies.M1002=Thor
movies.M1003=Logan
movies.M1004=Conjuring2
movies.M1005=StarWars
我得到的是空地图。为什么没有填充地图?
答案 0 :(得分:0)
尝试将属性更新为c.astype(bool)
c.astype(np.int64)
c.astype(float)
c.astype(int)
c.astype(np.float32)
,并将movies.names.M100...
类中的字段movieCollectionMap
重命名为names
使用MovieCollections
时,字段名称应与属性匹配。因此,在这种情况下,@ConfigurationProperties
是prefix
,字段名称是movies
,哈希图是具有代码和值作为影片名称的键
此外,您需要适当地更新names
和getter
方法。