spring xml

spring xml,第1张

使用eclipse添加spring步骤:

1。下载jar包,添加到WEB-INF/lib里

2。在WEB-INF/webxml里添加Spring支持:在webxml添加如下片断

<listener><listener-class> orgspringframeworkwebcontextContextLoaderListener

</listener-class></listener>

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/classes/spring/xml</param-value>

</context-param>

3。在src下建立spring目录,里面添加spring的配置文件

4。自己写类和每个类的配置

完毕

spring注解开发,减少在xml文件里的各种繁琐配置,不过呢有利也有弊,我们都需要学习。

首先我们使用@Component来实现bean标签的替换,当然这个是万能的,在web层,service层,dao层都可以使用。不过有其他三个更加细致的对不同层进行了注解配置

web层:@Controller

service层:@Service

Dao层:@Repository

这三个具体到了不同的层,见名知意,推荐使用

再者是DI依赖注入,之前是通过写set方法然后xml中使用ref进行各种配置的,现在我们只需要在属性的上面加一个@Autowired就可以啦,这是最基础也是最简单的一个,通过类型进行依赖注入。当然设计到多选一的时候,我们可以使用@Resouce(写对应的id),唯一选择嘛。

这些配置的前提是需要进行包扫描

在xml中书写

context:component-scan base-package=“路径”,这样就可以完成半注解半xml配置的spring开发啦。如果你想把包扫描也搞成注解形式,那么需要写一个等同xml配置的类,在它的上面写@ComponentSan(对应的扫描路径),同时需要写@Configration,表明这是spring核心配置类

想引用其他配置文件,需要写上@Import(“其他配置文件名class”),通过反射获取内容。

综合来说,配置类需要写三个注解

@Configration

@ComponentScan(包扫描路径)

@Import(其他配置类class)

public class SpringConfigration(){

里面写对应的内容,比如复杂对象的创建对象返回(用到@bean)等等

}

以上就是小白对spring的初步理解,有一些可能错误不对的地方还需要进行调整与深入理解。继续加油,继续学习吧

项目,需要访问多个数据库,而且需要在服务器运行不重新启动的情况下,动态的修改spring中配置的数据源datasource,在网上找了很多资料,最后找到了适合我的方法,下面总结一下。

spring的配置文件是在容器启动的时候就加载到内存中的,如果手动改了applicationxml,我们必须要重新启动服务器配置文件才会生效。而在spring中提供了一个类WebApplicationContext,这个类可以让你获得一些bean,可以修改内存中的信息,我就是通过这个类来实现的。下面是我具体的代码。

package comsouthdigitalhospital;

import javaioIOException;

import javaxservletServletContext;

import javaxservletServletException;

import javaxservlet>

首先你要明白spring的ApplicationContext是放在tomcat的application里的,所以第一步是取得application,也就是requestgetSession()getServletContext()

第二步是通过调用spring提供的静态方法取得ApplicationContext,此方法的参数是第一步取得的application

如下:

WebApplicationContextUtilsgetRequiredWebApplicationContext(requestgetSession()getServletContext());

spring 怎么获取webxml中的context Spring配置文件在类路径下面 在Spring的java应用程序中,一般我们的Spring的配置文件都是放在放在类路径下面(也即编译后会进入到classes目录下)。 以下的项目,因为是用maven管理的

<bean id="readXmlService" class="comxxxxxxreadXmlServiceImpl" init-method="init"></bean>

这样配置你的读取xml的服务,spring框架会在启动的时候自动跑 readXmlServiceImpl中的init方法,所以你只要将读取xml的过程放到init方法里,那在spring启动的时候就会自动将xml中数据读取到内存中。

1 请求首先 由 前端 DispatcherServlet 捕获;

2 DispatcherServlet 经过 HandlerMapping 获取适当的 Hanlder ,也即 Controller ,并返回给 DispatcherServlet;

3 如果有设置 拦截器,首选执行拦截器的 preHandler 方法,并把执行结果返回 DispatcherServlet;

4 DispatcherServlet 根据捕获的请求,以及 Handler (Controller) ,获取到适当的 HandlerAdapter 处理,并把结果返回给 DispatcherServlet,结果为 (View 和 Model);

5 如果有设置拦截器,就是执行 拦截器的 postHandler 方法,并返回 DispatcherServlet;

6 DispatcherServlet 根据获取的 view 跟 model 结合 ViewResolver,返回所指的 视图模板,并返回给 DispatcherServlet;

7 DispatcherServlet 结合 视图模型跟model ,执行 render() 渲染界面,并返回给客户端;

一个DispatcherServlet 都有自己 上下文配置文件, 这个配置继承自根的上下文配置文件;

每个 DispatcherServlet 都可配置多个不同的 HandlerMapping 映射方式;每个 HandlerMapping 都实现了 Ordered 接口,可以上下文文件配置中设置优先使用的 HandlerMapping;

用户的请求被 DispatcherServlet 捕获后,DispatcherServlet 使用优先级高的

HandlerMapping 查找可用的 Handler,如果没有找到合适的 Handler,就使优先级次之的 HandlerMapping

继续查找,直到找到为止;

比如:Spring MVC 提供主要的 HanderMapping 有 DefaultAnnotationHandlerMapping, SimpleUrlHandlerMapping, BeanNameUrlHandlerMapping

复制代码

<bean id="defaultAnnoHandlerMapping"

class="orgspringframeworkwebservletmvcannotationDefaultAnnotationHandlerMapping">

<property name="order" value="1"/>

</bean>

<bean id="simpleUrlMapping" class="org

springframeworkWebservlethandlerSimpleUrlHandlerMapping">

<property name="order" value="2"/>

<!-- -->

</bean>

<bean id="beanNameUrlMapping" class="orgspringframeworkWebservlet

handlerBeanNameUrlHandlerMapping">

<!-- -->

</bean>

复制代码

如果不为HandlerMapping明确指定order,那么默认值为IntegerMAX_VALUE,对应最低优先级。

如果 DefaultAnnotationHandlerMapping 找到相应的 Handler ,就把数据传给相应的

Controller 类下的相应的 HandlerAdapter (方法处)处理;如果没有找到,就到

SimpleUrlHandlerMapping 处理;

Spring MVC xml配置说明

1 Webxml 配置

1> 首先 Spring 监听器:

<!-- Creates the Spring Container shared by all Servlets and Filters -->

<listener>

<listener-class>orgspringframeworkwebcontextContextLoaderListener</listener-class>

</listener>

它是整个 spring 框架的入口,会自动装载 应用程序根上下文的 配置文件;因为他实现了 ServletContextListener 这个接口,项目启动时,就会执行它实现的方法。

2> 根应用程序上下文配置:

<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/spring/root-contextxml</param-value>

</context-param>

也可叫 spring 全局配置,在这里可以配置 数据源 等一些 全局的spring 基本的配置;dispatcherServlet 可以继承自这里的配置;

3> diapatcherServlet 配置:

复制代码

<!-- Processes application requests -->

<servlet>

<servlet-name>appServlet</servlet-name>

<servlet-class>orgspringframeworkwebservletDispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/spring/appServlet/servlet-contextxml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>appServlet</servlet-name>

<url-pattern>do</url-pattern>

</servlet-mapping>

复制代码

load-on-startup 值为 "1" 表示该 servlet (dispatcherServlet 也是一个 servlet) 随 servlet 容器同时启动。

dispatcherservlet 的 init-param 节点不是必须的,如果没有配置,该 dispatcherServlet 对应的 上下文配置文件 就会到 /WEB-INF/[servlet-name]-servletxml 加载;

servlet-mapping 的 url-pattern 的值 "do" 表示,servlet 只会拦截 do 后缀的请求,这种配置不会影响静态资源的访问。

4> 配置工程项目编码:

复制代码

<filter>

<filter-name>CharacterEncodingFilter</filter-name>

<filter-class>orgspringframeworkwebfilterCharacterEncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>UTF-8</param-value>

</init-param>

<init-param>

<param-name>forceEncoding</param-name>

<param-value>true</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>CharacterEncodingFilter</filter-name>

<url-pattern>/</url-pattern>

</filter-mapping>

复制代码

该过滤器如果没有配置,请求访问可能会遇乱码;

-------------------------------------------------------------

现在配置 diapatcherServlet 对应的 上下文配置文件: /WEB-INF/spring/appServlet/servlet-contextxml (上面配置的)

1> 启动扫描所有的 Controller

<context:component-scan base-package="comstudyweb"/>

主要作用于 @Controller,假如他的包结构是这样的:

comstudyweb

|---controller

|-----|-----abcControllerjava

 |-----cdeControllerjava

那么上面的 base-package 写为 comstudywebcontroller 也是正确的;

2> <mvc:annotation-driven /> 说明:

是一种简写形式,可以让初学者快速成应用默认的配置方案,会默认注册

DefaultAnnotationHandleMapping以及AnnotionMethodHandleAdapter 这两个 Bean,

这两个 Bean ,前者对应类级别, 后者对应到方法级别;

上在面的 DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter 是 Spring 为 @Controller 分发请求所必需的。

annotation-driven 扫描指定包中类上的注解,常用的注解有:

复制代码

@Controller 声明Action组件

@Service 声明Service组件 @Service("myMovieLister")

@Repository 声明Dao组件

@Component 泛指组件, 当不好归类时

@RequestMapping("/menu") 请求映射

@Resource 用于注入,( j2ee提供的 ) 默认按名称装配,@Resource(name="beanName")

@Autowired 用于注入,(srping提供的) 默认按类型装配

@Transactional( rollbackFor={Exceptionclass}) 事务管理

@ResponseBody

@Scope("prototype") 设定bean的作用域

复制代码

3> 视图解析类,对模型视图名称的解析,在请求时模型视图名称添加前后缀

<beans:bean class="orgspringframeworkwebservletviewInternalResourceViewResolver">

<beans:property name="prefix" value="/WEB-INF/views/" />

<beans:property name="suffix" value="jsp" />

</beans:bean>

InternalResourceViewResolver 提供了对 JstlView 的支持: <property

name="viewClass" value="orgspringframeworkwebservletviewJstlView"

/>

Spring Mvc 25 版本以前,提供了 注解 功能,实现了对 REST 的全面支持; REST 通过不带扩展名的 URL 来访问系统资源;REST 会把每个请求资源当成是静态,每个 URL 资源都是一个静态资源;

它通 @RequestMapping主@PathVariable 注释提供访问映射,由@RequestMapping 中的 value 及 method 就可以支持Rest式的访问。

通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer

Pages(JSP)技术、Velocity、Tiles、iText 和 POI。Spring MVC

框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术。Spring MVC

分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

比如 使用的是 Velocity 技术,那么只要把 suffix 的 value 值改为 "vm" 即可;

方法一:在初始化时保存ApplicationContext对象

代码:

ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContextxml");

acgetBean("beanId");

说明:

这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring的情况。

以上就是关于spring xml全部的内容,包括:spring xml、spring开发之注解基础(半注解半xml)、spring如何动态加载配置文件,就是配置文件修改了,application.xml如何能读取到等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9416866.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存