spring配置文件详解|Spring MVC 配置文件讲解

spring配置文件详解|Spring MVC 配置文件讲解的第1张示图

⑴ 关于Spring框架的配置文件application.xml,有哪些不错的参考说明

既然是ssh,那就需要在web.xml中配置一下用-INF/:applicationContext.xml,org.springframework.web.context.ContextLoaderListener

⑵ 恳请spring配置文件逐条详解,详见问题补充。

逐条解释肯定解释不完,就跟你讲一下事务管理的相关理解吧。

下面是Spring较早时期的一个配置,能体现出一点底层的东西。

<beanid="dataSource"class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close"><propertyname="driverClass"value="com.mysql.jdbc.Driver"/><propertyname="jdbcUrl"value="jdbc:mysql://localhost:3306/"/><propertyname="user"value="root"/><propertyname="password"value="fuhaiwei"/></bean><beanid="sessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><propertyname="dataSource"ref="dataSource"/><propertyname="mappingResources"value="com/fuhaiwei/domain/domain.xml"/><propertyname="hibernateProperties"><props><propkey="hibernate.hbm2ddl.auto">update</prop><propkey="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop></props></property></bean><beanid="transactionManager"class="org.springframework.orm.hibernate4.HibernateTransactionManager"><propertyname="dataSource"ref="dataSource"/></bean>//看这个,这个是关键,事务管理是靠AOP实现的,下面是一个拦截器。<beanid="transactionInterceptor"class="org.springframework.transaction.interceptor.TransactionInterceptor"><propertyname="transactionManager"ref="transactionManager"/><propertyname="transactionAttributes">//指定事务传播属性,例如getUser给予只读事务<props><propkey="get*">PROPAGATION_REQUIRED,readOnly</prop><propkey="add*">PROPAGATION_REQUIRED</prop><propkey="update*">PROPAGATION_REQUIRED</prop><propkey="update*">PROPAGATION_REQUIRED</prop></props></property></bean>//这个也是关键,指定那些Bean会启动上面的拦截器。<beanclass="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"><propertyname="interceptorNames"value="transactionInterceptor"/>//指定所有Service结尾的Bean会启用事务管理。<propertyname="beanNames"value="*Service"/></bean>//现在使用的<tx:annotation-driventransaction-manager="transactionManager"/>//直接替代了上述两条配置。

从上面的配置可以看出,Spring的事务管理要发挥作用有一些条件。

一:这个类要由Spring来管理,也就是说配置成一个Bean,并且程序中实际使用的必须是由容器注入的。(因为事务管理的实现原理是AOP代理,我们实际使用的UserService对象将是一个代理对象)

二:我们应该告诉Spring,我们想在那些类或者说Bean上启用事务。

三:我们应该告诉Spring,我们想在那些方法上启用事务。(因为AOP代理一般是使用JDK动态代理机制,而JDK想要代理的方法,必须实现于一个接口,所以我们经常发现由Spring管理的项目,其Service和Dao常常都有接口类)

四:我们在Dao中,获取Session时,应该用getCurrentSession()方法,而不是openSession()方法,因为openSession()方法会打开一个全新的Session,且不与线程关联。事务管理器到时候无法获取这个Session也就无法管理事务。而如果使用getCurrentSession()方法,这个方法获取的事务是与线程关联的,到时候事务管理器就可以打开事务,提交事务,或者回滚事务。

五:这是的transactionInterceptor一个片段

publicObjectinvoke()throwsThrowable{//如有必要打开事务。TransactionInfotxInfo=createTransactionIfNecessary(tm,txAttr,joinpointIdentification);ObjectretVal=null;try{//运行被代理类的实际方法,也就是我们的Service类的某个方法retVal=invocation.proceed();}catch(Throwableex){//如果抛出异常就回滚事务(默认配置情况下)(txInfo,ex);throwex;}finally{cleanupTransactionInfo(txInfo);}//如果没有异常就提交事务(txInfo);returnretVal;}

最后总结,这里面设计到很多个知识点,如什么是AOP,SpringAOP实现的方法是什么,什么是JDK动态代理,什么是Spring自动代理工厂,很多很多,不知道你掌握的情况,所以有问题请追问吧。

⑶ spring 配置文件

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><– session工厂节点,将Hibernate的session工厂注入到Spring的配置文件中 –> <property name="configLocation" value="classpath:hibernate.cfg.xml"> </property> </bean><– 设置事务代理类,并将session工厂对象引入事务中 –> <bean id="myHibTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean><– 引入事务代理对象及其相关配置常量,并通过abstract属性将本节点设置为父类,子类子要继承此类(设置parent属性),就可直接使用此类的属性也就是事务,无需每个节点再设置 –> <bean id="base" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager" ref="myHibTransactionManager"> </property> <property name="transactionAttributes"> <props> <prop key="add*">PROPAGATION_REQUIRED</prop> <prop key="*">PROPAGATION_REQUIRED,readOnly</prop> </props> </property> </bean>《– DAO节点,需要注入session工厂对象 –》 <bean id="userDao" class="userDao.impl.UserDao"> <property name="sessionFactory" ref="sessionFactory"></property> </bean>《– 具体对对象进行调用的使用类,直接在此通告ref引入userDao对象即可在该类中直接调用userDao对象,但是前提是在UserBiz类中要设置userDao的属性声明和setter方法 –》 <bean id="userBizTarget" class="UserBiz.impl.UserBiz"> <property name="userDao" ref="userDao"></property> </bean>《– 设置此类继承事务代理父类,通告parent属性继承父类属性 –》 <bean id="userBiz" parent="base"> <property name="target" ref="userBizTarget"></property> </bean>《– 对action节点的设置,通过class找到action的具体路径,name属性是struts配置文件中节点path,ref注入相关对象,在struts配置中要修改相关action节点的type属性 –》 <bean name="/users" class="com.yourcompany.struts.action.UsersActionAction"> <property name="userBiz" ref="userBiz"></property> </bean></beans>请采纳。

⑷ spring的配置文件放在什么位置

这个不是一定的,随你自己的意思,你可以放在WEB-INF里,也可以放在classpath下。只需在配置web.xml时指定位置即可。<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:beans.xml</param-value></context-param>上面就是web.xml中对spring容器的初始化配置,<context-param>中<param-value>中的classpath:beans.xml 即是spring配置文件beans.xml的位置(classpath下,在myeclipse的工程中是src目录下)

⑸ Spring MVC 配置文件讲解

使用@Controller定义一个控制器 使用@RequestMapping映射请求 使用@RequestParam绑定请求参数到方法参数 使用@ModelAttribute提供一个从模型到数据的链接 使用@SessionAttributes指定存储在会话中的属性<context:annotation-config/>他的作用是隐式地向 Spring 容器注册、、、 这 4 个BeanPostProcessor。例如:如果想使用@ Resource 、@ PostConstruct、@ PreDestroy等注解就必须声明。如果想使用@PersistenceContext注解,就必须声明的Bean。如果你想使用@Autowired注解,那么就必须事先在 Spring 容器中声明 Bean。传统声明方式如下:<bean class="org.springframework.beans.factory.annotation. "/> 如果想使用 @Required的注解,就必须声明的Bean。同样,传统的声明方式如下:<bean class="org.springframework.beans.factory.annotation."/> 记得,使用注解一般都会配置扫描包路径选项<context:component-scan base-package=”XX.XX”/> <servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/dispatcherServlet-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>这个配置常常见于web.xml文件中<load-on-startup>1</load-on-startup>是启动顺序,让这个Servlet随Servletp容器一起启动。 <url-pattern>*.do</url-pattern> 会拦截*.do结尾的请求。<servlet-name>dispatcherServlet</servlet-name>这个Servlet的名字是dispatcherServlet,可以有多个DispatcherServlet,是通过名字来区分的。每一个DispatcherServlet有自己的WebApplicationContext上下文对象。同时保存的ServletContext中和Request对象中,关于key,以后说明。 在DispatcherServlet的初始化过程中,框架会在web应用的 WEB-INF文件夹下寻找名为[dispatcherServlet]-servlet.xml 的配置文件,生成文件中定义的bean。<init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/dispatcherServlet-servlet.xml</param-value></init-param>指明了配置文件的文件名,不使用默认配置文件名,而使用springMVC.xml配置文件。其中<param-value>**.xml</param-value> 这里可以使用多种写法1、不写,使用默认值:/WEB-INF/<servlet-name>-servlet.xml2、<param-value>/WEB-INF/classes/springMVC.xml</param-value>3、<param-value>classpath*:springMVC-mvc.xml</param-value>4、多个值用逗号分隔springMVC-mvc.xml 配置文件片段讲解<context:annotation-config/><!– 自动扫描的包名 –> <context:component-scan base-package="com.iflysse"/> <!– 默认的注解映射的支持 –> <mvc:annotation-driven/><!– 视图解释类 –> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/><!–可为空,方便实现自已的依据扩展名来选择视图解释类的逻辑 –> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> </bean> <mvc:annotation-driven /> 是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学都快速应用默认配置方案。<mvc:annotation-driven /> 会自动注册与 两个bean,是spring MVC为@Controllers分发请求所必须的。并提供了:数据绑定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,读写XML的支持(JAXB),读写JSON的支持(Jackson)。后面,我们处理响应ajax请求时,就使用到了对json的支持。后面,对action写JUnit单元测试时,要从spring IOC容器中取与 两个bean,来完成测试,取的时候要知道是<mvc:annotation-driven />这一句注册的这两个bean。<!– json 支持 –><bean id=""class="org.springframework.http.converter.json."><property name="objectMapper" ref="commonObjectMapper"/><property name="supportedMediaTypes"><list><value>text/html;charset=UTF-8</value></list></property></bean><!– ObjectMapper json转换 –><bean id="commonObjectMapper" class="cn.com.starit.util.CommonObjectMapper"/>

⑹ spring 配置文件都有哪些元素

获得profile属性,这个属性应用于对个beans标签的情况,从spring3开始的,这样我们可以写多套bean定义,特别是使用到数据源的时候,可以切换不同的数据源,想要使用哪个bean定义就激活谁。

⑺ 怎么在spring配置文件中配置properties

1.PropertyPlaceholderConfigurer类它是把属性中的定义的变量(var)替代,spring的配置文件中使用${var}的占位符<beans><bean id="configBean" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"><value>db.properties</value></property></bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"><value>${jdbc.driverClassName}</value></property> <property name="url"><value>${jdbc.url}</value></property> <property name="username"><value>${jdbc.username}</value></property> <property name="password"><value>${jdbc.password}</value></property></bean></beans>db.properties文件jdbc.driverClassName=org.hsqldb.jdbcDriverjdbc.url=jdbc:hsqldb:hsql://proction:9002jdbc.username=sajdbc.password=root2.PropertyOverrideConfigurer类跟PropertyPlaceholderConfigurer功能一样,不过用法不一样.不用占位符,在属性文件中直接定义属性的值,这样就允许有默认值<beans><bean id="configBean" class="org.springframework.beans.factory.config.PropertyOverrideConfigurer"> <property name="location"><value>db.properties</value></property></bean> <bean id="dataSource" class="org.apache.common

⑻ spring的配置文件怎么写

标准的Spring配置文件编写:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd" default-autowire="byName" default-lazy-init="true"> <!– 配置数据源 –> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value> jdbc:mysql://localhost/ssh?characterEncoding=utf-8 </value> </property> <property name="username"> <value>root</value> </property> <property name="password"> <value>123</value> </property> </bean> <!–配置SessionFactory –> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="mappingResources"> <list> <value>com/ssh/pojo/User.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.show_sql">true</prop> </props> </property> </bean> <!– 事务管理 –> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> </bean> <!– hibernateTemplate –> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> </bean> <!– 配置数据持久层 –> <bean id="userDao" class="com.ssh..impl.UserDaoImpl"> <property name="hibernateTemplate" ref="hibernateTemplate"></property> </bean> <!– 配置业务逻辑层 –> <bean id="userService" class="com.ssh.service.impl.UserServiceImpl"> <property name="userDao" ref="userDao"></property> </bean> <!– 配置控制层 –> <bean id="UserAction" class="com.ssh.action.UserAction" scope="prototype"> <property name="userService" ref="userService"></property> </bean> <!– 配置pojo –> <bean id="User" class="com.ssh.pojo.User" scope="prototype"/></beans>

⑼ 解析spring的配置文件的方式有哪些

Java中spring读取配置文件的几种方法如下: 一、读取xml配置文件 (一)新建一个java bean package chb.demo.vo; public class HelloBean { private String helloWorld; public String getHelloWorld()

未经允许不得转载:山九号 » spring配置文件详解|Spring MVC 配置文件讲解

赞 (0)