- 浏览: 840348 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
renzhengzhi:
请教一下楼主,公有云和私有云的开发,具体要做哪些工作呢?我拿到 ...
4,云的4 种模式 -
SangBillLee:
我用了solr5.5,用SolrQuery查询,没法高亮,不知 ...
solr5.x快速入门 -
lw900925:
这翻译读起来真是别扭。
solr in action翻译-第一章1.1 -
springjpa_springmvc:
spring mvc demo教程源代码下载,地址:http: ...
Spring MVC性能提升 -
h416373073:
正遇到了此问题不知如何解决, 多谢分享
solr错误
1. IOC Annotations
1.1 零配置使用场合
IOC Annotations 可以实现零配置,但也因为不用在applicationContext.xml中定义了,也就缺乏了灵活的,不修改代码的IOC手段,也无法做一些属性值的配置。
所以,IOC annotation 常用于Service,Dao,Controller 这些依赖关系比较固定,约定俗成大于配置的地方。
而XML 配置文件则用于如Database/SessionFactory,Spring Security这些需要配置的地方。
1.2 ApplicationContext.xml 定义
定义自动扫描Classpath路径,扫描带有@Component/@Service/@Repository的pojo加入applicationContext,并根据@Autoired/@Qualifier 与 @Resource进行IOC配置,并对@PostConstruct 和 @PreDestroy和@Requried进行处理
<context:component-scan base-package="org.springside.examples.miniweb" /> 以下配置除不会扫描@Component/@Service/@Repository外,其他作用同上
<context:annotation-config />1.2 @Component/@Service 和 @Repository
Spring扫描指定的classpath时,会含以上Annotation的类将加其加入ApplicaitonContext中。
一般@Repository用于DAO层, 而@Service层用于Service层,@Component用于其他,三者在Spring当前版本并没有本质区别,建议只使用@Component。
1.3 @Autoired/@Qualifier 与 @Resource
Spring2.5的新特性 part1(InfoQ)
使用 Spring 2.5 注释驱动的 IoC 功能(IBM DW)
@Autoried 与 @Resource都比较灵活,不只能声明于setter函数,还能声明于不按setter规则命名的函数上,以及私有属性上(不建议使用,因为在单元测试时需要以反射注入)
@Autoried 默认byType,如果需要byName,在变量上增加@Qualifier,另外@Autoried默认隐含了@Required,保证变量一定被注入,如果不需要,用@Autowired(required=false)取消。
@Resource 默认byName,如果name找不到就会byType, 另可以用name与type属性设定。
1.4 @Requried
对于非@autowired标注的属性,声明@Required表明明属性必须被注入。
1.5 生命周期Annotation
JSR250的@PostConstruct 和 @PreDestroy,比以往的实现接口或者在applicationContext.xml中配置init-method的方式更为方便和标准。
{{@PostContruct在所有注入函数执行完毕后执行,而@PreDestroy则在JVM退出的ShutdonwHook中拦截,注意,ShutdownHook对kill -9这种暴烈的关闭无效。
}}
2.属性文件
在配置文件中,很有一些属性会在团队的开发环境,个人的开发环境,集成测试环境,生产环境,甚至生产环境集群的每台服务器中都有所不同的。 为了将这些易变的属性抽从applicationContext取出来,Spring 做了一些特殊的支持,
详见Configuring applications with Spring,在SpringSide里配置如下:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="ignoreResourceNotFound" value="true" />
<property name="locations">
<list>
<value>classpath:application.properties</value>
<value>classpath:application.local.properties</value>
<value>file:/var/myapp/application.server.properties</value>
</list>
</property>
</bean> 团队公用的开发环境配置在application.properties中,放入版本控制系统管理中。
个人的开发环境,集成测试环境中与公共环境不相同的部分,放入application.local.properties中,会覆盖application.properties中的设置,由个人管理,不放入版本管理系统。
在打包部署到生产环境时,可将生产环境每台服务器的特殊属性可放在服务器的某个固定目录,如/var/myapplicaiton/application.server.properties中(而不放在项目jar内), 每台服务器的配置文件分开不同服务器目录放在版本管理系统中。也可以在启动命令中加入参数来覆盖,如-Djdbc.username=aaa。
3. 事务
因为不喜欢在配置文件里用AspectJ定义事务,宁愿使用Spring的@Transactional annotation在service层上进行标注。
对于只读的方法,可以加入@Transactional (readOnly=true) 标注以提高性能。
因为Spring默认只对RuntimeException进行rollback,所以:
1.所有在service层方法中用throws定义的checkedException,都必须在@Transactional中定义rollbackclass。
2.所有在service层方法中catch处理了的Exception,又希望Spring辅助rollback的话,必须重抛一个RunTimeException,SpringSide里预定义了一个统一的ServiceException。
可特别配置事务类型,见
JavaEE事务资料 六种事务模型与四种事务隔离级别介绍。
1.1 零配置使用场合
IOC Annotations 可以实现零配置,但也因为不用在applicationContext.xml中定义了,也就缺乏了灵活的,不修改代码的IOC手段,也无法做一些属性值的配置。
所以,IOC annotation 常用于Service,Dao,Controller 这些依赖关系比较固定,约定俗成大于配置的地方。
而XML 配置文件则用于如Database/SessionFactory,Spring Security这些需要配置的地方。
1.2 ApplicationContext.xml 定义
定义自动扫描Classpath路径,扫描带有@Component/@Service/@Repository的pojo加入applicationContext,并根据@Autoired/@Qualifier 与 @Resource进行IOC配置,并对@PostConstruct 和 @PreDestroy和@Requried进行处理
<context:component-scan base-package="org.springside.examples.miniweb" /> 以下配置除不会扫描@Component/@Service/@Repository外,其他作用同上
<context:annotation-config />1.2 @Component/@Service 和 @Repository
Spring扫描指定的classpath时,会含以上Annotation的类将加其加入ApplicaitonContext中。
一般@Repository用于DAO层, 而@Service层用于Service层,@Component用于其他,三者在Spring当前版本并没有本质区别,建议只使用@Component。
1.3 @Autoired/@Qualifier 与 @Resource
Spring2.5的新特性 part1(InfoQ)
使用 Spring 2.5 注释驱动的 IoC 功能(IBM DW)
@Autoried 与 @Resource都比较灵活,不只能声明于setter函数,还能声明于不按setter规则命名的函数上,以及私有属性上(不建议使用,因为在单元测试时需要以反射注入)
@Autoried 默认byType,如果需要byName,在变量上增加@Qualifier,另外@Autoried默认隐含了@Required,保证变量一定被注入,如果不需要,用@Autowired(required=false)取消。
@Resource 默认byName,如果name找不到就会byType, 另可以用name与type属性设定。
1.4 @Requried
对于非@autowired标注的属性,声明@Required表明明属性必须被注入。
1.5 生命周期Annotation
JSR250的@PostConstruct 和 @PreDestroy,比以往的实现接口或者在applicationContext.xml中配置init-method的方式更为方便和标准。
{{@PostContruct在所有注入函数执行完毕后执行,而@PreDestroy则在JVM退出的ShutdonwHook中拦截,注意,ShutdownHook对kill -9这种暴烈的关闭无效。
}}
2.属性文件
在配置文件中,很有一些属性会在团队的开发环境,个人的开发环境,集成测试环境,生产环境,甚至生产环境集群的每台服务器中都有所不同的。 为了将这些易变的属性抽从applicationContext取出来,Spring 做了一些特殊的支持,
详见Configuring applications with Spring,在SpringSide里配置如下:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="ignoreResourceNotFound" value="true" />
<property name="locations">
<list>
<value>classpath:application.properties</value>
<value>classpath:application.local.properties</value>
<value>file:/var/myapp/application.server.properties</value>
</list>
</property>
</bean> 团队公用的开发环境配置在application.properties中,放入版本控制系统管理中。
个人的开发环境,集成测试环境中与公共环境不相同的部分,放入application.local.properties中,会覆盖application.properties中的设置,由个人管理,不放入版本管理系统。
在打包部署到生产环境时,可将生产环境每台服务器的特殊属性可放在服务器的某个固定目录,如/var/myapplicaiton/application.server.properties中(而不放在项目jar内), 每台服务器的配置文件分开不同服务器目录放在版本管理系统中。也可以在启动命令中加入参数来覆盖,如-Djdbc.username=aaa。
3. 事务
因为不喜欢在配置文件里用AspectJ定义事务,宁愿使用Spring的@Transactional annotation在service层上进行标注。
对于只读的方法,可以加入@Transactional (readOnly=true) 标注以提高性能。
因为Spring默认只对RuntimeException进行rollback,所以:
1.所有在service层方法中用throws定义的checkedException,都必须在@Transactional中定义rollbackclass。
2.所有在service层方法中catch处理了的Exception,又希望Spring辅助rollback的话,必须重抛一个RunTimeException,SpringSide里预定义了一个统一的ServiceException。
可特别配置事务类型,见
JavaEE事务资料 六种事务模型与四种事务隔离级别介绍。
发表评论
-
Spring的PropertyPlaceholderConfigurer应用
2014-01-02 14:43 8341. PropertyPlaceholderConfigur ... -
spring 发送MAILJavaMailSenderImpl
2014-01-02 14:32 892spring对mail的支持是org.springframe ... -
spring REST中的内容协商ContentNegotiatingViewResolver
2014-01-02 14:23 1690一.REST内容协商介绍 RESTfu ... -
Spring MVC异常处理
2014-01-02 14:13 474Spring3.0中对异常的处理方法一共提供了两种:一种是使 ... -
Spring AOP 的@Aspect (转)
2013-12-19 10:04 5694转自:http://blog.csdn.net/tangh ... -
spring @component的作用
2013-12-19 09:54 9961、@controller 控制器(注入服务) 2、@se ... -
Spring MVC性能提升
2013-12-18 18:06 7132这几天在做公司内部SpringMVC的培训,培训之余看了看大 ... -
Spring MVC简介
2013-08-27 20:09 982Spring MVC简介 1.Sp ... -
SpringMVC中HandlerInterceptorAdapter的使用
2013-08-27 20:04 1993一般情况下,对来自浏览器的请求的拦截,是利用Filte ... -
Spring注解_详解
2013-08-27 20:01 930spring注解 @Autowired 注释 将 ... -
SpringMVC方法返回值的学习(注解版)
2013-08-22 09:38 1433/** * 项目名称:Spring3mvc de ... -
spring中的Log4jConfigListener作用
2013-08-21 10:40 1377使用spring中的Log4jConfigListener ... -
srping 异常
2010-11-15 14:32 1223Spring数据访问的根异常是DataAccessExcep ... -
使用spring的jdbcTemplate-----将JDBC操作建模为细粒度的对象
2010-09-11 16:32 15171,更新操作对象 首先考虑如何将User插入操作建模为一个操 ... -
使用spring的jdbcTemplate-----使用具名参数
2010-09-11 15:01 3601在JDBC用法中,SQL参数是用占位符?表示,并且受到位置的限 ... -
使用spring的jdbcTemplate-----SimpleJdbcTemplate的使用
2010-09-11 12:39 59081,用简单的JDBC模板更新数据库 传统的Jdb ... -
使用spring的jdbcTemplate-----简化JdbcTemplate模板的创建
2010-09-10 20:41 2288每次使用的时候,都要创建一个JdbcTemplate新实例,这 ... -
使用spring的jdbcTemplate-----用JDBC模板查询数据库
2010-09-10 00:26 11780JdbcTemplate类声明了几个重载的query()模板方 ... -
使用spring的jdbcTemplate-----用jdbc模板跟新数据库
2010-09-09 23:21 44991,用语句创建器更新数据库第一个回调接口是PreparedSt ... -
spring中jdbcTemplate归纳2
2010-09-07 22:01 2162用语句创建器更新数据库第一个回调接口是PerparedStat ...
相关推荐
SPRING 笔记SPRING 笔记SPRING 笔记
Spring 笔记 Spring 是 Java 企业版(Java EE)应用程序的框架,提供了结构化的配置文件,实现了控制反转(IoC)和面向切面编程(AOP),支持表现层、业务逻辑层和持久层。Spring 的核心是 IoC 和 AOP,能够与主流...
spring笔记spring基础笔记
spring 初学 笔记 入门提示
Spring笔记可能涵盖了以下内容: 1. **IoC(Inversion of Control)容器**:Spring的核心特性之一,通过反转控制权,让框架负责管理对象的生命周期和装配,开发者只需定义配置,无需手动创建对象。 2. **依赖注入...
"Spring笔记示例源代码"这个资源很可能是为了帮助学习者深入理解Spring框架的各种功能和用法而提供的实际代码示例。 1. **Spring IoC**:IoC是Spring的核心特性,它将对象的创建和管理权交给Spring容器,使得开发者...
spring入门笔记
尚硅谷Spring笔记
【Spring 概念与优势】 Spring 是一个开源的 Java 应用框架,主要设计目标是简化企业级应用的开发。它的核心特性是依赖注入(Dependency Injection,简称 DI)和面向切面编程(Aspect-Oriented Programming,简称 ...
除了以上核心内容,Spring笔记中还涵盖了Spring Boot、Spring Cloud等进阶话题,这些都是现代微服务架构中不可或缺的部分。Spring Boot简化了Spring应用的初始搭建和运行过程,而Spring Cloud则为构建分布式系统提供...
Spring框架是Java开发中的核心组件,它为应用程序提供...这些笔记将涵盖这些主题的基本概念、使用方法和示例,帮助初学者快速理解和掌握Spring生态系统。通过深入学习和实践,开发者能够构建出高效、可扩展的Java应用。
### Spring框架概述与核心特性 #### 一、Spring框架简介 Spring框架是一个开源的企业级Java应用框架,由Rod Johnson在2003年发起并创建。它为Java应用程序提供了全面的基础设施支持,使得开发者能够专注于业务逻辑...
spring笔记 狂神说
这个"spring笔记"涵盖了上述所有内容,并且非常完整,对于初学者和有经验的开发者都是极好的学习资源。通过深入学习和实践,你将能够充分利用Spring框架的强大功能,提升你的开发效率和应用质量。
本笔记将深入讲解Spring的核心概念和使用方法,帮助你快速掌握这一重要的技术。 1. **注解装配**:在Java世界中,注解(Annotation)是一种元数据,它可以提供额外的信息给编译器或运行时环境。在Spring中,注解被...
狂神的spring讲解资料,已汇总成PDF笔记,并加了章节标签方便阅读
《韩顺平Spring笔记及PPT资料》是一份详尽且深入的学习资源,由知名IT教育专家韩顺平老师精心编制。这份资料旨在帮助学习者掌握Spring框架的核心概念和技术,以便在实际开发中灵活运用。Spring是Java企业级应用开发...