使用SpringBoot怎么对IOC容器中注入的Bean进行获取?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
一: 注入一个TestUtils类
package com.shop.sell.Utils;
import com.shop.sell.dto.CartDTO;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class TestUtils {
@Bean(name="testDemo")
public CartDTO said() {
CartDTO cartDTO = new CartDTO();
cartDTO.setProductID(789);
cartDTO.setProductQuantity(10);
return cartDTO;
}
}
二: 创建一个获取bean的公共类
package com.shop.sell.Utils;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
@Component
public class SpringUtil implements ApplicationContextAware{
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
if(SpringUtil.applicationContext == null) {
SpringUtil.applicationContext = applicationContext;
}
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
public static Object getBean(String name){
return getApplicationContext().getBean(name);
}
public static <T> T getBean(Class<T> clazz){
return getApplicationContext().getBean(clazz);
}
public static <T> T getBean(String name,Class<T> clazz){
return getApplicationContext().getBean(name, clazz);
}
}
三: 在控制器中获取bean测试结果
package com.shop.sell.controller;
import com.shop.sell.Utils.ResultVOUtil;
import com.shop.sell.Utils.SpringUtil;
import com.shop.sell.VO.ProductInfoVO;
import com.shop.sell.VO.ProductVO;
import com.shop.sell.VO.ResultVO;
import com.shop.sell.dataobject.ProductCategory;
import com.shop.sell.dataobject.ProductInfo;
import com.shop.sell.dto.CartDTO;
import com.shop.sell.from.OrderForm;
import com.shop.sell.service.CategoryService;
import com.shop.sell.service.ProductService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* 买家商品
*/
@RestController
@RequestMapping("/buyer/product")
public class BuyerProductController {
private static ApplicationContext applicationContext;
@Autowired
private ProductService productService;
@Autowired
private CategoryService categoryService;
@GetMapping(value = "/list")
public CartDTO list(){
CartDTO cartDTO = (CartDTO) SpringUtil.getBean("testDemo");
return cartDTO;
}
}
看完上述内容,你们掌握使用SpringBoot怎么对IOC容器中注入的Bean进行获取的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注天达云行业资讯频道,感谢各位的阅读!