我已经在主类中创建了RestTemplate Bean,并通过使用@Autowired将该bean注入到另一个不同包的类中。当我尝试使用它为null时。
主要类别: 包:com.ff.filter
@ComponentScan(basePackages= {"com.ff"})
@SpringBootApplication
public class CcFilterSearchApplication {
public static void main(String[] args) {
SpringApplication.run(CcFilterSearchApplication.class, args);
}
@Bean
@Primary
RestTemplate restTemplate() {
return new RestTemplate();
}
}
我在其中注入了bean的软件包: com.ff.filter.friendlist
@Component
public class CustomFriendList {
@Autowired
RestTemplate restTemplate;
@PostConstruct
public void init(){
System.out.println("inti "+restTemplate);
}
public List<String> blockedList(String userId) throws JSONException {
System.out.println("restTemplate "+restTemplate);
}
}
当我调用此(blockedList)方法restTemplate打印null时,请任何人帮助。
答案 0 :(得分:1)
如果CustomFriendList
组件未通过Spring机制初始化,即由于它是通过new CustomFriendList()
创建的,则RestTemplate
成员不会自动装配,因此null
。 >
您可能需要to create一个@SpringBootTest
,注入组件,然后测试功能。
@RunWith(SpringRunner.class)
@SpringBootTest
public class ApplicationTest {
@Test
public void blockedList(CustomFriendList friendList) throws Exception {
List<String> blocked = friendList.blockedList("testUserId");
blocked.forEach(System.out::println);
}
}
答案 1 :(得分:0)
@自动连线 CustomFriendList customFriendList;
与其创建新对象Autowire bean,不如使它工作