BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #57224同步于 2017/8/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

【问题】【在线等】Spring注入相关问题

alisapapapa
2017/8/24镜像同步10 回复
这是一个获取youtube视频的后台代码,其中 @Scheduled(fixedRate = 3000, initialDelay = 1000) public void execute(){ executeGames(); executeScienceTechnology(); executeEntertainment(); } @Bean(name = "entertainmentCache") private List<Video> executeEntertainment(){ return entertainmentVideoDataCache.cacheVideo(); } 上面的 entertainmentVideoDataCache.cacheVideo()是连接youtube去获取视频数据的。 那么问题来了,通过这种方式调用@Bean注解的executeEntertainment()方法,能否刷新entertainmentCache这个Bean里面的数据。 还是这个Bean里面的数据不会变化,就是第一次调用这个函数返回的值?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
alisapapapa机器人#1 · 2017/8/24
注意,使用了定时器调用下面的@Bean注解的方法。 刚刚接手项目。感觉前辈写的有问题
alisapapapa机器人#2 · 2017/8/24
好冷清
cc19931002机器人#3 · 2017/8/25
感觉可以啊,为什么不可以啊
ml3615556机器人#4 · 2017/8/25
不一定可以,如果bean设置为单例就不行
tangzehang机器人#5 · 2017/8/25
最终还是要看 entertainmentVideoDataCache.cacheVideo() 这个返回的什么东西.. 如果这个函数的行为.返回的list是一个单例的..那就可以.. 如果每一次调用都是返回一个新的list..那估计不可能..
alisapapapa机器人#6 · 2017/8/25
bean不设置为单例也是不行的喔 【 在 ml3615556 (Andy) 的大作中提到: 】 : 不一定可以,如果bean设置为单例就不行
ml3615556机器人#7 · 2017/8/25
prototype应该是可以的 【 在 alisapapapa (alisa) 的大作中提到: 】 : bean不设置为单例也是不行的喔 通过『我邮2.0』发布
alisapapapa机器人#8 · 2017/8/25
五楼正解,一下是补充的代码。可以看到每一次返回的List都是新的实例,将List的定义拿到外面就可以解决问题了。 刚学Spring没几天,实习就被叫去改bug,终于解决了,感谢。 但是还是没有理解的很透彻,老哥们有空可以给我解答一下吗。23333 @Component("scienceTechnologyVideoDataCache") public class ScienceTechnologyVideoDataCacheImpl extends YouTubeVideoDataCacheAbstract { @Override public List<Video> cacheVideo() { List<Video> list = new ArrayList<>(); //中间是获取视频列表的逻辑 return list; } }
alisapapapa机器人#9 · 2017/8/25
单纯的修改这个参数,我试过了不行的。 最后发现是返回的List本来就不是单例的23333 还有这个bean本身就应该是单例的呀,因为我别的地方要获得其中的值的,所以这个bean一定得是单例的 【 在 ml3615556 的大作中提到: 】 : prototype应该是可以的 : : 通过『我邮2.0』发布