欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

@compent 结合 @PostConstruct 加载数据字典

程序员文章站 2022-05-25 08:04:08
...

@Compent spring组件 // org.springframework.stereotype.Component
@PostConstruct java注解 //javax.annotation.PostConstruct

@PostConstruct在项目中的用处
1.spring项目加载数据字典
@PostConstruct注解的方法在项目启动的时候执行这个方法,也可以理解为在spring容器启动的时候执行,可作为一些数据的常规化加载,比如数据字典之类的。

以例子说明

  • 实际项目中可以在PostConstruct执行时候将数据字典保存到redis或其他缓存中,设置过期时间,项目启动全部获取;其他地方调用的时候直接可以从缓存中获取

/**
 * @description 构造数据字典
 */
@Component
public class DataDict {
	
	private Logger logger = LoggerFactory.getLogger(this.getClass());
	
	public DataDict() {
		logger.info("--------数据字典构造方法---");
	}
	
	// 这个就不列出来了,就是一个订单的service
	@Autowired
	private SdOrderService sdOrderService;
	
	private SdOrder orderTest;
	
	public SdOrder test() {
		return orderTest;
	}
	
	@PostConstruct
	public void init() {
		logger.info("[email protected]的方法---");
		String orderNo = "SD201909111129308026";
		// 根据订单号查询数据看数据
		orderTest = sdOrderService.selectByOrderNo(orderNo);
	}
}


@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:spring.xml","classpath:spring-mybatis.xml","classpath:spring-rabbitmq.xml"})
@WebAppConfiguration
public class EverythingTest {
	private Logger logger = LoggerFactory.getLogger(this.getClass());
    @Autowired
	private DataDict dataDict;
	
	@Test           
	public void testPostConstruct() {
		SdOrder order = dataDict.test();
		logger.info("----订单>:{}",order);
	}
}

// 打印结果
// [INFO][][main][2019-09-20 16:22:05] andy.bean.po.DataDict.<init>(DataDict.java:24) [--------数据字典构造方法---]

// [INFO][][main][2019-09-20 16:22:22] andy.bean.po.DataDict.init(DataDict.java:38) [[email protected]的方法---]

// [INFO][][main][2019-09-20 16:23:23] com.launch.sharedevice.EverythingTest.testPostConstruct(EverythingTest.java:63) [----订单>:SdOrder(userId=202, orderNo=SD201909111129308026, costRuleId=123, deviceNo=989820000212, price=0.01, currencyType=0, payFrom=1, payItem=3, payStatus=0, payTime=null, thirdTradeNo=null, number=1)]

相关标签: postConstruct