`
log_cd
  • 浏览: 1100334 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

spring相关配置

阅读更多
1.web.xml中载入spring配置
	<context-param>
		<param-name>contextConfigLocation</param-name>
 		<param-value>
			classpath:applicationContext.xml
		</param-value>
	</context-param>

	<listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>


        或者
        <servlet>
               <servlet-name>context</servlet-name>
                 <servlet-class>
                         org.springframework.web.context.ContextLoaderServlet
                 </servlet-class>
                 <load-on-startup>1</load-on-startup>
        </servlet>

     配置完成之后,即可通过WebApplicationContextUtils.getWebApplicationContext
方法在Web应用中获取ApplicationContext引用。

    为了在Struts中加载Spring Context,在struts-config.xml中增加如下部分:
         <struts-config>
               <plug-in
                   className="org.springframework.web.struts.ContextLoaderPlugIn">
               <set-property property="contextConfigLocation"
           value="/WEB-INF/applicationContext.xml" />
               </plug-in>
         </struts-config>

2.关于hbm.xml文件的载入
   通常在spring中会这么写代码:
	<bean id="sessionFactory" 		class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
		<property name="mappingResources">
			<list>
			<value>Student.hbm.xml</value>
			<value>Course.hbm.xml</value>
			…
			</list>
		</property>
	</bean>

   如果X.hbm.xml文件很多时,则写起来会很不方便,可以像下面这种写法就简单多了:(其中假设所有的.hbm.xml文件都存于com/model目录)
	<bean id="sessionFactory" class="org.springframework.
		orm.hibernate.LocalSessionFactoryBean">
		<property name="mappingDirectoryLocations">
			<list>
			<value>classpath:/com/model</value>
			</list>
		</property>
                
                <property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.Oracle9Dialect
				</prop>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.jdbc.fetch_size">50</prop>
				<prop key="hibernate.jdbc.batch_size">100</prop>
			</props>
		</property>

	</bean>
3.Spring中实现事务管理
    首先,如果使用mysql,确定mysql为InnoDB类型。
事务管理的控制应该放到商业逻辑层。你可以写个处理商业逻辑的JavaBean,在该JavaBean中调用DAO,然后把该Bean的方法纳入spring的事务管理。

	<bean id="txProxyTemplate" abstract="true"
		class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
		<property name="transactionManager">
			<ref bean="transactionManager"/>
		</property>
		<property name="transactionAttributes">
		<props>
		<prop key="save*">PROPAGATION_REQUIRED</prop>
		<prop key="remove*">PROPAGATION_REQUIRED</prop>
		<prop key="*">PROPAGATION_REQUIRED</prop>
		</props>
		</property>
	</bean>

	<bean id="userManage" parent="txProxyTemplate">
		<property name="target">
			<bean class="com.yz.spring.service.implement.UserManageImpl">
				<property name="userDAO">
				<ref bean="userDAO"/>
				</property>
			</bean>
		</property>
	</bean>

com.yz.spring.service.implement.UserManageImpl就是我们的实现商业逻辑的JavaBean。我们通过parent元素声明其事务支持。

4.加载多个xml配置文件,生成ApplicationContext实例

(1)ApplicationContext context=new ClassPathXmlApplicationContext(new String[]{"applicationContext1.xml","applicationContext2.xml"});

BeanFactory factory=(BeanFactory)context;

(2)<beans>   <import resource="conf/jms-applicationContext.xml"/></beans>

5.给bean指定别名

  如:通过不同的名字来引用同一个数据源
<alias name="dataSource" alias="componentA-dataSource"/>
<alias name="dataSource" alias="componentB-dataSource"/>


6.JNDI定位DataSource(通常由应用程序服务器管理)

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
   <property name="jndiName">
      <value>java:comp/env/jdbc/myds</value>
   </property>
</bean>


7.加载属性文件

<bean id="jdbcConfiguration"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:jdbc-config.properties</value>
            </list>
        </property>
    </bean>

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close" p:driverClassName="${jdbc_driver}"
        p:url="${jdbc_url}" p:username="${username}" p:password="${password}"/>


8.在JSP里调用spring管理的bean取得数据
<%@ page import="org.springframework.context.ApplicationContext"%>
<%@ page import="org.springframework.web.context.support.WebApplicationContextUtils"%>
<%@ page import="com.yourcompany.service.CategoryService"%>

<%
//applicationContext.xml中一定要有完整的依赖链,从dataSource到CategoryService

ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext());
CategoryService cs = (CategoryService) ctx.getBean("CategoryService");
List list =cs.getCategoryDAO().findAll();
%>


9.通过BeanFactoryAware从Spring容器中取Bean
public final class BeanFactoryHelper implements BeanFactoryAware {

	private static BeanFactory beanFactory;
	
	@Override
	public void setBeanFactory(BeanFactory factory) throws BeansException {
		beanFactory = factory;
	}

	public BeanFactory getBeanFactory() {
        return beanFactory;
    }
	
	public static Object getBean(String name) {
        return beanFactory.getBean(name);
    }	
	
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public static Object getBean(String name, Class clazz) {
	    return beanFactory.getBean(name, clazz);
	}	
	
}

<bean id="beanFactoryHelper" class="net.demo.spring3.util.BeanFactoryHelper"></bean>


10.使用ApplicationContextAware让Spring容器传递ApplicationContext
public final class ApplicationContextHelper implements ApplicationContextAware{
	 private static ApplicationContext appCtx;
	
	@Override
	public void setApplicationContext(ApplicationContext applicationContext)
			throws BeansException {
		appCtx = applicationContext;
	}
	
	public static ApplicationContext getApplicationContext() {
	    return appCtx;
	}	

	public static Object getBean(String beanName ) {
		return appCtx.getBean(beanName);
	}

	@SuppressWarnings({ "unchecked", "rawtypes" })
	public static Object getBean(String name, Class requiredType) throws BeansException {
	    return appCtx.getBean(name, requiredType);
	}	

	public static boolean containsBean(String name) {
		return appCtx.containsBean(name);
	}	

	public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException {
		return appCtx.isSingleton(name);
	}	
	
}

<bean id="springApplicationHelper" class="net.demo.spring3.util.ApplicationContextHelper"></bean>


11.在Servlet(或者Filter,或者Listener)中使用spring的IOC容器
      web.xml中的加载顺序为:listener >> filter >> servlet >> spring。其中filter的执行顺序是filter- mapping在web.xml中出现的先后顺序。
      加载顺序会影响对spring bean的调用。比如filter 需要用到bean ,但是加载顺序是先加载filter 后加载spring,则filter中初始化操作中的bean为null。所以,如果过滤器中要使用到 bean,可以将spring 的加载改成Listener的方式。
      在servlet或者filter或者Listener中使用spring的IOC容器的方法是:
WebApplicationContext webApplicationContext = WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext()); 

      由于spring是注入的对象放在ServletContext中的,所以可以直接在ServletContext取出WebApplicationContext 对象:
WebApplicationContext webApplicationContext = (WebApplicationContext) servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);

附参考资料:
http://www.family168.com/oa/tech/spring.html
分享到:
评论

相关推荐

    spring配置 spring配置 spring配置 spring配置 spring配置

    spring配置 spring配置 spring配置 spring配置 spring配置

    ssm配置spring配置

    ssmspring配置ssmspring配置ssmspring配置ssmspring配置ssmspring配置ssmspring配置ssmspring配置ssmspring配置ssmspring配置ssmspring配置ssmspring配置ssmspring配置ssmspring配置ssmspring配置ssmspring配置ssm...

    Spring配置加注释

    Spring配置 Spring 配置 映射 加注释!!!!Spring配置 Spring 配置 映射 加注释!!!!

    Spring Cloud配置中心获取不到最新配置信息的问题

    解决这个问题的关键是了解配置中心的工作机制特别是与基于VCS的backend(如Git、SVN)相关的配置。 Spring Cloud Config 使用基于VCS的backend来存储配置信息,在默认情况下,配置信息会被checkout或clone到本地文件...

    SpringCloud——分布式配置中心(Spring Cloud Config)

    在微服务架构中,Spring Cloud Config 是一个强大的分布式配置中心,它允许开发人员将应用程序的配置存储在远程仓库中,并且可以在运行时动态地管理和更新这些配置,无需重启应用。这个特性对于大型分布式系统来说...

    spring配置文件实例

    spring配置文件实例

    Adobe Flex 和 Spring 相关配置整合

    3. **配置BlazeDS**:设置BlazeDS的相关配置,定义数据源、服务以及Flex客户端可以调用的方法。 4. **创建Flex客户端**:使用Flex Builder创建Flex应用程序,与后端Spring服务进行通信。 5. **创建Java服务器端**...

    struts 与spring 相关配置 2

    NULL 博文链接:https://a-bin.iteye.com/blog/1006301

    activemq spring 客户端配置

    当一个服务器不可用时,Spring配置的连接工厂会自动尝试连接到Zookeeper中标识的其他复制节点。 以上就是关于“activemq spring 客户端配置”的主要内容。通过这些步骤,你可以构建一个能够在Spring环境中与...

    Spring动态加载配置文件

    接下来,一旦检测到Spring配置文件发生变化,我们需要重新加载配置文件。这可以通过Spring的`ApplicationContext`的`refresh()`方法来实现。`refresh()`会重新初始化Bean工厂,读取新的配置信息,并更新所有Bean的...

    spring MVC配置详解

    Spring MVC 配置详解 Spring MVC 是一个基于 DispatcherServlet 的 MVC 框架,它是当前主流的 Web 框架之一。要想灵活运用 Spring MVC 来应对大多数的 Web 开发,就必须要掌握它的配置及原理。 一、Spring MVC ...

    springcloud配置中心个人demo

    可以结合 Spring Boot Actuator 来实现对配置更新的监控和相关日志的记录。 通过这个 "springcloud-config" 压缩包,你可以学习如何设置和使用 SpringCloud Config,理解其核心概念和工作流程,以及如何在 Java ...

    spring cloud2.0 eureka server spring security配置

    以上就是关于Spring Cloud 2.0中Eureka Server与Spring Security配置的相关知识点。通过这些配置,你可以确保Eureka Server的数据安全,防止未授权的访问。在实际项目中,还需要根据具体的业务需求进行调整和优化。

    SSH---Spring减少配置量将公共的配置进行抽象源码

    在Spring Boot项目中,我们可以引入特定的 Starter 包,Spring会根据类路径中的依赖自动配置相关bean。例如,如果项目中有hibernate-validator的依赖,Spring Boot会自动配置验证相关的bean。 再者,我们可以通过@...

    Spring配置文件集合

    在本压缩包中,我们找到了一系列与Spring相关的配置文件,这些文件在构建JavaWeb应用时起着至关重要的作用。 1. `jdbc.properties`: 这个文件通常用于存储数据库连接的相关信息,如URL、用户名、密码等。它是Spring...

    Spring的基本配置

    一、Spring配置概述 Spring的配置方式主要有两种:XML配置和Java配置。早期,XML配置是主流,而现在,随着Spring Boot的兴起,Java配置逐渐成为首选,因为它更加简洁和直观。不过,理解XML配置对于学习Spring的基础...

    spring配置文件详解

    Spring 配置文件详解 Spring 配置文件是 Spring 框架中最重要的配置文件之一,它负责定义和配置应用程序的Bean对象,以及它们之间的依赖关系。Spring 配置文件通常以XML文件的形式存在,文件名通常为...

    spring配置文件

    spring配置文件spring配置文件spring配置文件spring配置文件spring配置文件spring配置文件spring配置文件spring配置文件spring配置文件spring配置文件spring配置文件spring配置文件spring配置文件spring配置文件...

    spring 下载与配置

    在本篇文章中,我们将深入探讨如何下载并配置Spring框架。 首先,我们来了解如何下载Spring框架。Spring的官方网站是https://spring.io,你可以在这个网站上找到所有Spring项目,包括Spring Core、Spring Boot、...

Global site tag (gtag.js) - Google Analytics