`
thrillerzw
  • 浏览: 143889 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring框架

 
阅读更多

 

一、 scope="prototype" 作用域:

singleton 单例,缺省作用域。singleton的默认是在web容器启动时实例化,但也可以配置实例化的lazy延迟,这样就会在第一次被程序调用时实例化。

prototype 访问一次创建一个实例。适用于有状态的Bean,如struts2的action 

 

二、 IOC、Aop
IOC/DI:控制反转/依赖注入:控制权从应用程序转移到框架,由框架来管理对象的创建、销毁的生命周期,依赖关系,实现解耦。

di是实现ioc的一种方式。

主要采用XML/注解+反射+工厂模式。
通过XML配置/注解 JavaBean之间的关系,借助工厂模式进行反射机制来构造对象,管理对象

 

AOP为Aspect Oriented Programming的缩写,意为:面向切面编程(也叫面向方面)

spring aop通过jdk动态代理实现。

AOP 主要应用于日志记录,性能统计,安全控制 , 事务处理等方面。

 

三 、SpringMVC

基于REST风格的方式:地址栏url里面可以包含变量,不用使用?后的参数传递

@RequestMapping(value="/user/{id}",method=RequestMethod.GET)
public String show(@PathVariable String id,Model model){
    model.addAttribute("user",user对象);   

     return "user/show";
}

 

四 spring声名式事务

配置

 

	<!-- Spring的声明式事务管理  -->
	<!-- 设置与事务有关的各种属性  -->
 	<tx:advice id="txAdvice" transaction-manager="txManager">
		<tx:attributes>
			<tx:method name="insert*"  propagation="REQUIRED" rollback-for="Exception"/>
			<tx:method name="add*" propagation="REQUIRED" rollback-for="Exception" />
			<tx:method name="update*" propagation="REQUIRED" rollback-for="Exception" />
			<tx:method name="del*" propagation="REQUIRED" rollback-for="Exception" />
		      <!-- 除了你上面定义的,其他的方法不走事务 -->
                        <tx:method name="*" read-only="false" />
		</tx:attributes>
	</tx:advice>

	<!-- 声明切入点 -->
	<aop:config>
		<aop:pointcut id="loginPointCuts"
			expression="execution(* com.xx.xx.service.*.*(..))" />
			
		<aop:advisor advice-ref="txAdvice" pointcut-ref="loginPointCuts" />
	</aop:config>

  属性       是否需要?    默认值          描述

name  

与事务属性关联的方法名。通配符(*)可以用来指定一批关联到相同的事务属性的方法。 如:'get*''handle*''on*Event'等等。

propagation REQUIRED 事务传播行为
isolation DEFAULT 事务隔离级别
timeout -1 事务超时的时间(以秒为单位)
read-only false 事务是否只读?
rollback-for  

将被触发进行回滚的 Exception(s);以逗号分开。 如:'com.foo.MyBusinessException,ServletException'

no-rollback-for  

 被触发进行回滚的 Exception(s);以逗号分开。 如:'com.foo.MyBusinessException

关于事务隔离级别,参见我的另一篇博文:http://thrillerzw.iteye.com/blog/1886853

 

五 单元测试

 

 

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:/applicationContext.xml" })
public class PageServiceTest {
	@Autowired
	private PageService pageService;

	@Test
	public void saveOrUpdate() {
		PageInfoVo pageInfoVo=new PageInfoVo();
		pageInfoVo.setTdPageId(335);
		pageService.saveOrUpdate(pageInfoVo);
	}
}

 

import org.junit.runner.RunWith;

import org.springframework.test.context.ActiveProfiles;

import org.springframework.test.context.ContextConfiguration;

import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;

import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import org.springframework.test.context.transaction.TransactionConfiguration;

 

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations={"classpath:spring/applicationContext.xml"})

@TransactionConfiguration(transactionManager="txManager" ,defaultRollback= true)

@ActiveProfiles("test")

public class SpringTests extends AbstractTransactionalJUnit4SpringContextTests {

 

}

单元测试直接继承本类,并修改@ContextConfiguration的配置。

默认不提交数据库事务。可以修改@TransactionConfiguration的defaultRollback属性。也可在子类中重新定义@TransactionConfiguration。

 

补充:

junit3 : 1.单元测试类必须继承自TestCase。 2.要测试的方法必须以test开头。 

junit4: :

@Test  public 方法,方法名不需要已test开头,如:@Test(expected = IllegalArgumentException.class) 表明当这个方法抛出IllegalArgumentException时测试成功

@Before和@After (使用了该元数据的方法在每个测试方法执行之前都要执行一次。取代了JUnit以前版本中的setUp和tearDown方法)

 @lgnore(“该方法还没有实现”)

@BeforeClass @AfterClass 设置在public 静态方法之上,表示在class加载之前执行。这样设置的方法只会执行一次。

 

六、不能注入时候,获取bean

//ApplicationContextAware 在容器初始化完成后将ApplicationContext注入, 如果你只读ApplicationContext 肯定是线程安全的。
public class SpringContextUtil implements ApplicationContextAware {
	private static ApplicationContext applicationContext;

	private SpringContextUtil() {
	}
	public static Object get(String key) {
		if (applicationContext.containsBean(key)) {
			return applicationContext.getBean(key);
		}
		return null;
	}
	
	public static Object get(Class cls){
		return applicationContext.getBean(cls);
	}

	public static ApplicationContext getApplicationContext() {
		return applicationContext;
	}

	@Override
	public void setApplicationContext(ApplicationContext cxt)
			throws BeansException {
		applicationContext = cxt;
	}
}

   七、监听事件

事件:extends ApplicationEvent 

监听者:实现implements  ApplicationListener接口,实现了onApplicationEvent(ApplicationEvent event)方法,

主题:通知发生事件。applicationContext 的 publishEvent(ApplicationEvent event)方法,支持基于Observer模式的事件传播机制。

事件传播需要一个事件对象,一个监听者对象。监听者对象一直监听着是否有事件的发生。

代码参考:http://hi.baidu.com/java6666/item/aff06134c0af1a362e0f81ef   

 

八、其它

Spring中有两种类型的Bean,一种是普通Bean,另一种是工厂Bean,即FactoryBean。工厂Bean跟普通Bean不同,其返回的对象不是指定类的一个实例,其返回的是该工厂Bean的getObject方法所返回的对象。
    参考:http://tianya23.blog.51cto.com/1081650/660273

分享到:
评论

相关推荐

    Spring框架开发参考中文手册

    《Spring框架开发参考中文手册》是一本专门为Java开发者设计的指南,旨在帮助他们深入理解和熟练运用Spring框架进行软件开发。Spring作为Java企业级应用开发的主流框架,以其强大的功能、灵活的设计和广泛的社区支持...

    Spring框架 jar包

    Spring框架是中国Java开发领域中最广泛使用的轻量级框架之一,以其IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)为核心特性,极大地简化了企业级应用的开发。...

    Spring框架.ppt

    提供Spring框架的基本功能,其主要组件是BeanFactory,是工厂模式的实现。 Spring 上下文。向Spring 框架提供上下文信息,包括企业服务,如 JNDI、EJB、电子邮件、国际化、校验和调度等。 Spring AOP。通过配置管理...

    spring框架api中文版.zip(spring开发手册)

    即Spring框架的概述 1。 介绍Spring框架 1.1。 依赖注入和控制反转 1.2。 模块 1.2.1。 核心容器 1.2.2。 数据访问/集成 1.2.3。 web 1.2.4。 AOP和仪表 1 2 5。 测试 1.3。 使用场景 1.3.1。 依赖关系管理和命名...

    spring框架外文文献.docx

    Spring框架基础 Spring框架起源于Rod Johnson在2002年出版的《Expert One-on-One J2EE Design and Development》中的代码。这个框架融合了Java企业版(JEE)开发的最佳实践,与一流的第三方框架集成,并提供了简单...

    Spring框架的简单实现

    我们从一个简单的容器开始,一步步的重构,最后实现一个基本的Spring框架的雏形,为了帮助我们更加深入的理解Spring的IoC的原理和源码。 详细内容见博文: 【SSH进阶之路】一步步重构容器实现Spring框架——从一个...

    java spring框架学习资料 pdf

    《Java Spring框架学习指南》是一份详尽的教育资源,旨在帮助开发者从零基础开始逐步掌握Spring框架,并深入理解其核心概念和技术。这份PDF文档全面覆盖了Spring框架的基础知识,包括IoC(Inversion of Control)...

    spring框架帮助文档

    Spring框架是中国IT开发领域中最广泛使用的Java应用框架之一,它为构建高质量的、松耦合的、可测试的Java应用程序提供了全面的解决方案。这个“spring框架帮助文档”旨在为开发者提供详尽的指导,帮助他们克服在使用...

    Spring框架jar 文件

    Spring框架是中国Java开发领域中的一个核心支柱,它以其强大的功能和灵活性深受开发者喜爱。这个压缩包包含的是Spring框架的核心JAR文件,对于任何Java开发者,尤其是那些致力于企业级应用开发的人来说,这些都是必...

    Spring框架基础压缩包

    **Spring框架基础** Spring框架是Java企业级应用开发中的核心框架,它为应用程序提供了一个全面的基础设施,使得开发者可以专注于业务逻辑的实现,而无需关注底层的繁琐细节。Spring框架以其模块化的结构、依赖注入...

    Spring框架的设计原理及设计模式分析

    Spring 框架的设计原理及设计模式分析 Spring 框架的设计原理是基于面向 Bean 的编程(BOP,Bean Oriented Programming),它的核心组件只有三个:Core、Context 和 Beans。这些组件之间的协同工作是 Spring 框架的...

    SSH和Spring框架简介

    SSH和Spring框架是Java开发中的两个重要工具,它们在企业级应用开发中占据了核心地位。SSH,是由Struts2、Spring和Hibernate三个框架组成的集成解决方案,而Spring则是一个全面的后端开发框架,包含了多种功能模块。...

    spring框架,技术详解及使用指导

    Spring框架是Java开发领域中最广泛使用的轻量级框架之一,以其强大的依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect-Oriented Programming,简称AOP)能力而著称。本文将深入探讨Spring框架的核心...

    Spring框架学习笔记

    Spring框架是Java开发中广泛应用的轻量级框架,它以其依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)为核心特性,极大地简化了企业级应用的开发工作。这份"Spring框架...

    Java Spring框架学习笔记(内附源码).pdf

    Java Spring框架是当今最为流行的Java企业级应用开发框架,它以高度的解耦、简化开发、对AOP编程的支持以及方便的测试等特性,深受开发者喜爱。在本次的Java Spring框架学习笔记中,将对Spring框架的核心概念进行...

    Spring框架开发手册

    Spring框架是由Rod Johnson创建的开源框架,旨在解决企业应用开发的复杂性。Spring框架的出现极大地简化了企业级应用的开发,并且不仅仅局限于服务器端的开发。Spring的核心概念之一是使用简单的JavaBean来实现之前...

    spring框架jar包

    Spring框架是中国著名的Java企业级应用开发框架,由Rod Johnson在其著作《Expert One-on-One J2EE Design and Development》中首次提出。Spring以其轻量级、模块化和强大的依赖注入特性而闻名,它极大地简化了Java...

Global site tag (gtag.js) - Google Analytics