Spring中@Resource和@Autowire的区别
@Autowired(默认byType)
第一步是通过类型去查看bean,如果只有一个就装配
第二步是如果按照类型查找到多个就通过变量名去查找,如果查找到就装配,不然就执行第三步
第三步通过添加@Qualifier("bean的名字")通过添加这个注解,通过bean名字来装配
@Resource(默认byName)
第一步是通过变量名去查询,如果查找到就装配否则就按照类型去查找,如果查找到一个就装配,如果查找到多个就执行第二步
第二步就是通过@Resource ("bean名字")来根据bean名字查找并装配
Servlet的生命周期?
servlet由servlet container进行生命周期管理。
container启动时构造servlet对象并调用servlet init()进行初始化;
container运行时接受请求,并为每个请求分配一个线程(一般从线程池中获取空闲线程)然后调用service()。
container关闭时调用servlet destory()销毁servlet;
上述模式的缺点:
servlet是一个简单的网络IO模型,当请求进入servlet container时,servlet container就会为其绑定一个线程,在并发不高的场景下这种模型是适用的。但是一旦高并发(比如抽风用jemeter压),线程数量就会上涨,而线程资源代价是昂贵的(上线文切换,内存消耗大)严重影响请求的处理时间。在一些简单业务场景下,不希望为每个request分配一个线程,只需要1个或几个线程就能应对极大并发的请求,这种业务场景下servlet模型没有优势