springboot需要多例对象但Autowire创建为单例问题解决
问题
spring ioc注解我使⽤Autowire时,发现每次创建的handler对象都⼀样,导致neety报com.cqupttyserver.ServerHandler is not a @Sharable handler, so can't be added or removed multiple times.错误,我在组件上添加了@Scope("prototype")//不加为单例,因为每次新的连接到来之后都需要分配⼀个新的对象,所以需改为多例注解还是不⾏,因为Spring IOC默认是单例。
解决⽅案
1、在需要注⼊的对象上加上@Component注解的同时加上@Scope(“prototype”)注解,使对象创建时按照多例模式创建。
2、创建⼀个类实现ApplicationContextAware接⼝,外部传如需要创建对象的类即可。
@Component
public class GetBean implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext)throws BeansException {
if(GetBean.applicationContext ==null){
GetBean.applicationContext = applicationContext;
}
}
public static<T> T getBean(Class<T> clazz){
Bean(clazz);
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论