Scope
概述:Scope描述的是Spring容器如何新建Bean的实例的,Spring的scope有以下几种,通过@Scope注解来实现。
1)Singleton:一个Spring容器中只有一个Bean的实例,此为Spring的默认配置,全容器共享一个实例。
2)Prototype:每次调用新建一个Bean的实例。
3)Request:Web项目中,给每一个http request新建一个实例。
4)Session:Web项目中,给每一个http session新建一个实例。
5)GlobalSession:这个只在portal应用中有用,给每一个global http session新建一个实例。
Spring EL和资源调用
Bean的初始化和销毁
Profile
Profile为在不同的环境下使用不同的配置提供了支持(开发环境下的配置和生产环境下的配置肯定是不同的,例如,数据库配置)
1)通过设定Environment的Activeprofiles来设定当前context需要使用的配置环境。在开发中使用@Profile注解类或方法,达到不同环境下选择实例化不同的Bean。
2)通过设定jvm的spring.profiles.active参数来设置配置环境。
3)Web项目设置在Servlet的context parameter中。
Servlet2.5及以下:
<init-param>
<param-name>spring.profiles.active</param-name>
<param-value>production</param-value>
</init-param>
Servlet3.0及以上:
public class WebInit implements WebApplicationInitializer{ @Override public void onStartup(ServletContext servletContext) throws ServletException { servletContext.setInitParameter("spring.profiles,default","dev"); } }
演示
事件(Application Event)
Spring的事件需要遵循如下流程:
1)自定义事件,继承ApplicationEvent。
2)定义事件监听器,实现ApplicationListener。
3)使用容器发布事件。
演示