包含applicationcontext.xml的词条
applicationContext.xml 的配置
?xml version="1.0" encoding="UTF-8"?
beans xmlns=""
xmlns:xsi=""
xmlns:aop=""
xmlns:tx=""
xsi:schemaLocation="
"
!--
这是itsalon项目spring框架的核心配置
任何spring配置文件都会导入这个配置文件
内容主要包括:
连接MS SQL Server 2005的数据源(jdbcMSSQLServerDataSource)
使用c3p0连接MS SQL Server 2005的数据源(c3p0MSSQLServerDataSource)
会话工厂(sessionFactory)
--
!--
使用jdbc连接MS SQL Server 2005的数据源
bean id="jdbcMSSQLServerDataSource"
class="org.apache.commons.dbcp.BasicDataSource"
property name="driverClassName"
value="com.microsoft.sqlserver.jdbc.SQLServerDriver"
/property
property name="url"
value="jdbc:sqlserver://localhost:1433;databaseName=itsalon"
/property
property name="username" value="sa"/property
property name="password" value="sa"/property
/bean
--
!--
使用c3p0连接MS SQL Server 2005的数据源
--
bean id="c3p0MSSQLServerDataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close"
property name="driverClass"
value="com.microsoft.sqlserver.jdbc.SQLServerDriver"
/property
property name="jdbcUrl"
value="jdbc:sqlserver://localhost:1433;databaseName=itsalon"
/property
property name="user" value="sa"/property
property name="password" value="abc"/property
property name="maxPoolSize" value="40"/property
property name="minPoolSize" value="1"/property
property name="initialPoolSize" value="1"/property
property name="maxIdleTime" value="20"/property
/bean
!--
Hibernate数据访问会话工厂
--
bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
property name="dataSource"
ref bean="c3p0MSSQLServerDataSource" /
/property
property name="hibernateProperties"
props
!--
以下为使用proxool数据库连接池的配置
有异常,未调试完毕
--
!--
prop key="hibernate.connection.provider_class"
org.hibernate.connection.ProxoolConnectionProvider
/prop
prop key="hibernate.proxool.pool_alias"
dbProxool
/prop
prop key="hibernate.proxool.xml"
proxool-config.xml
/prop
--
prop key="hibernate.dialect"
org.hibernate.dialect.SQLServerDialect
/prop
prop key="hibernate.show_sql"true/prop
prop key="hibernate.format_sql"true/prop
/props
/property
property name="mappingResources"
list
valuenet/itsalon/entity/Users.hbm.xml/value
valuenet/itsalon/entity/City.hbm.xml/value
valuenet/itsalon/entity/Province.hbm.xml/value
valuenet/itsalon/entity/ManagerPower.hbm.xml/value
valuenet/itsalon/entity/Manager.hbm.xml/value
valuenet/itsalon/entity/WebSite.hbm.xml/value
valuenet/itsalon/entity/BbsTopicOperation.hbm.xml/value
valuenet/itsalon/entity/BbsComment.hbm.xml/value
valuenet/itsalon/entity/BbsSessionType.hbm.xml/value
valuenet/itsalon/entity/BbsUsers.hbm.xml/value
valuenet/itsalon/entity/BbsSession.hbm.xml/value
valuenet/itsalon/entity/BbsSessionMaster.hbm.xml/value
valuenet/itsalon/entity/BbsCollection.hbm.xml/value
valuenet/itsalon/entity/BbsUsersType.hbm.xml/value
valuenet/itsalon/entity/BbsTopicType.hbm.xml/value
valuenet/itsalon/entity/BbsTopic.hbm.xml/value
valuenet/itsalon/entity/BbsInfo.hbm.xml/value
valuenet/itsalon/entity/BbsGrade.hbm.xml/value
/list
/property
/bean
!-- 事务管理 --
bean id="hibTransactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager"
property name="sessionFactory" ref="sessionFactory" /
/bean
tx:advice id="tranAdvice"
transaction-manager="hibTransactionManager"
tx:attributes
tx:method name="add*" propagation="REQUIRED" /
tx:method name="del*" propagation="REQUIRED" /
tx:method name="update*" propagation="REQUIRED" /
tx:method name="do*" propagation="REQUIRED" /
tx:method name="*" propagation="SUPPORTS" read-only="true" /
/tx:attributes
/tx:advice
aop:config
aop:pointcut id="serviceMethods"
expression="execution(* net.itsalon.*.service.*.*(..))" /
aop:advisor advice-ref="tranAdvice"
pointcut-ref="serviceMethods" /
/aop:config
!-- 导入用户管理模块bean --
import resource="beans-manager.xml"/
!-- 导入论坛模块bean --
import resource="beans-bbs.xml"/
/beans
spring的applicationContext.xml如何自动加载
用spring的时候需要一个bean容器来管理所有的bean,所有bean默认是写在applicationContext.xml里的,在web.xml里面是这么设置的,
方式一:
contextConfigLocation
/WEB-INF/dispatcherServlet-servlet.xml
org.springframework.web.context.ContextLoaderListener
是可选项,如果没有的话就加载applicationContext.xml,也可以用它指定其他配置文件。
方式二:
context
org.springframework.web.context.ContextLoaderServlet
这种没用过。
applicationContext.xml配置问题
ApplicationContext实现的默认行为就是在启动时将所有singleton bean提前进行实例化(也就是依赖注入)。提前实例化意味着作为初始化过程的一部分,ApplicationContext实例会创建并配置所有的singleton bean。通常情况下这是件好事,因为这样在配置中的任何错误就会即刻被发现(否则的话可能要花几个小时甚至几天)。
bean id="testBean" class="com.fhx.TestBean" 该bean默认的设置为:
bean id="testBean" class="com.fhx.TestBean" lazy-init="false" lazy-init="false" 立退加载, 表示spring启动时,立刻进行实例化。
(lazy-init 设置只对scop属性为singleton的bean起作用)
有时候这种默认处理可能并不是你想要的。如果你不想让一个singleton bean在ApplicationContext实现在初始化时被提前实例化,那么可以将bean设置为延迟实例化。
bean id="testBean" class="com.fhx.TestBean" lazy-init="true", lazy-init="true" 延迟加载 ,设置为lazy的bean将不会在ApplicationContext启动时提前被实例化,而是在第一次向容器通过getBean索取bean时实例化的。
如果一个设置了立即加载的bean1,引用了一个延迟加载的bean2,那么bean1在容器启动时被实例化,而bean2由于被bean1引用,所以也被实例化,这种情况也符合延迟加载的bean在第一次调用时才被实例化的规则。
在容器层次中通过在beans/元素上使用'default-lazy-init'属性来控制延迟初始化也是可能的。如下面的配置:
beans default-lazy-init="true"!-- no beans will be eagerly pre-instantiated... --/beans
如果一个bean的scope属性为scope=“pototype“时,即使设置了lazy-init="false",容器启动时不实例化bean,而是调用getBean方法是实例化的
另外加以说明:
.init-method属性指定初始化时执行的方法,distory-method属性指定bean销毁时执行的方法。
怎么创建applicationcontext.xml文件
用spring框架,创建applicationContext.xml文件总是从别的项目中拷贝过来。这次想自己新建一个applicationContext.xml文件,步骤如下:新建-》other-xml-xmlFile-next-createXMLfilefromanXMLschemafile-selectxmlcatelogentry-选中需要的xsd,生成xml文件如下:
请问prefixp如何在去除,我看其他项目中的applicationContext.xml文件都没有这个prefix。
找不到“applicationContext.xml”怎么办?
初学Spring在用Resource rs=new ClassPathResource("applicationContext.xml"),出现文件找不到的问题,或者你在new ClassPathResource("F://...//applicationContext.xml"),一样会出现找不到的情况。
原因:
ClassPathResource中找不到applicationContext.xml是因为这个xml文件在建工程的时候默认放在了 WebContent/WEB-INF/下面,但是用ClassPathResource是在当前目录也就是这个java文件所在的目下进行寻找。
解决方法:
方法一:把这个xml文件移动到src目录下面就ok了。
方法二:如果用FileSystemXmlApplicationContext呢,它是根据指定的路径来进行寻找,所以要把路径写完整。现在xml路径在 src文件夹下。那就要写:
ApplicationContext ctx=new FileSystemXmlApplicationContext("src/applicationContext.xml");
这是比较直接简单的写法。对于FileSystemXmlApplicationContext也可以采用:
1.加上classpath:前缀(这个时候xml要放在当前目录也就是src下)
ApplicationContext ctx=new FileSystemXmlApplicationContext("classpath:applicationContext.xml");
2.加上file:把路径写全(用这个方法xml可以放任意地方)
ApplicationContext ctx=new ClassPathXmlApplicationContext("ApplicationContext ctx=new ClassPathXmlApplicationContext("file:F:/workspace/SpringExercis/src/applicationContext.xml");