статическая переменная сохранена в сегменте данных или сегменте кода, как упомянуто прежде.
можно быть уверены, что это не будет выделено на стеке или "куче".
нет никакого риска для коллизии с тех пор static
, ключевое слово определяет объем переменной, чтобы быть файлом или функцией, в случае коллизии существует компилятор/компоновщик для предупреждения Вас о.
А, хороший пример
Как объясняется в этой ветке в списке рассылки cxf-user, вместо CXFServlet загрузить свой собственный контекст Spring из user-webservice-servlet.xml
, вы можете просто загрузить всю партию в корневой контекст. Переименуйте существующий user-webservice-servlet.xml
на другое имя (например, user-webservice-beans.xml
) затем измените свой параметр contextConfigLocation
на что-то вроде:
<servlet>
<servlet-name>myservlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>myservlet</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml
/WEB-INF/user-webservice-beans.xml
</param-value>
</context-param>
<servlet>
<servlet-name>user-webservice</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>user-webservice</servlet-name>
<url-pattern>/UserService/*</url-pattern>
</servlet-mapping>
Используйте config примерно так:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>myservlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>user-webservice</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
, и тогда вам понадобятся три файла:
Файлы * - servlet.xml
используются автоматически, и каждый создает контекст приложения для этого сервлета.
Из документации Spring, 13.2. DispatcherServlet :
При инициализации фреймворк из
DispatcherServlet
, ищите файл с именем [имя-сервлета] -servlet.xml в каталогеWEB-INF
вашего веб-сайта приложение и создать бобы определены там (переопределив определения любых бинов, определенных с помощью то же имя в глобальной области действия).