Spring学习总结笔记二

Spring是轻量级的开源开发框架,Spring框架主要有两种特性控制反转IOC和面向切面编程AOP

(1)Spring IOC容器

Spring IOC负责创建对象,管理对象(通过依赖注入DI)), 装配对象,配置对象,并且管理这些对象的整个生命周期。Spring的依赖注入 是IOC的一个方面,是个通常的概念,它有多种解释。这概念是说你不用创建对象,而只需要描述它如何被创建。

(2)Spring beans

Spring beans是那些形成spring应用的主干的java对象。它们被Spring IOC容器初始化,装配和管理。这些beans通过容器中配置的元数据创建。比如,以XML文件中<bean/>的形式定义。

TAPP4080013.java 是一个spring bean的java对象

<bean id="T080015" class="com.test.action.T080015" 

Spring框架定义的beans都是单例beans。在bean tag中有个属性“singleton”,如果它被赋为TRUE,bean就是单例,否则就是一个prototype bean。默认是TRUE,所以所有在spring框架中的beans缺省都是单件、

Spring框架中bean的生命周期

Spring容器从XML文件中读取bean的定义,并实例化bean。Spring根据bean的定义填充所以的属性

(3)Spring注解

基于Java的配置,允许你用少量的java注解的帮助下,进行你的大部分spring配置,而非通过XML文件。开发者通过在相应的类,方法或属性上使用注解的方式,直接组件类中进行配置,而不是使用xml表述bean的装配关系。

@Configuration注解

它用来标记类可以当做一个bean的定义,被Spring IOC容器使用。

@Bean注解

它标识此方法将要返回一个对象,作为一个bean注册进spring应用的上下文

@Required注解

这个注解表明bean的属性必须在配置的时候设置,通过一个bean定义的显式的属性值或通过自动装配

若@Required注解的bean属性未被设置,容器将抛出BeanInitializationException

@Autowired注解

@Autowired注解提供了功能更细粒度的控制,包括在何处以及如何完成自动装配。它的用法和@Required一样,修饰setter方法、构造器、属性或者具有任意名称和多个参数的方法。

<!-- 该 BeanPostProcessor 将自动起作用,对标注 @Autowired 的 Bean 进行自动注入 -->
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>

@Qualifier注解

当有多个相同类型的bean却只有一个需要自动装配时,将@Qualifier注解和@Autowired注解结合使用以消除这种混淆,指定需要装配的确切bean。

@Autowired 可以对成员变量、方法以及构造函数进行注释,而@Qualifier 的标注对象是成员变量、方法入参、构造函数入参

Spring面向切面编程(AOP)

面向切面的编程AOP,是一种编程技术,允许程序模块化横向切割关注点,或横切典型的责任划分,如日志和事物管理。

AOP核心就是切面,它将多个类的通用行为封装成可重用的模块,该模块含有一组API提供横切功能。

比如,一个日志模块可以被称作日志的AOP切面。根据需求的不同,一个应用程序可以有若干切面。Spring AOP中,切面通过带有@Aspect注解实现

对于其中关注点和横切关注点的区别。关注点是应用中一个模块的行为,一个关注点可能会被定义成一个我们想实现的一个功能。横切关注点是一个关注点,此关注点是整个应用都会使用的功能,并影响真个应用,比如日志,安全和数据传输,几乎应用的每个模块都需要的功能。

spring的MVC

spring配备构建web应用的全功能MVC框架。Spring可以很便捷地和其他MVV框架集成,如

Struts,Spring的MVC框架用控制反转把业务对象和控制逻辑清晰地隔离。它允许以声明的方式

把请求参数和业务对象绑定。

Spring的MVC框架是围绕DispatcherServlet来设计的,它用来处理所有的HTTP请求和和响应

WebApplicationContext继承了ApplicationContext并增加了一些web应用必备的特有功能,

它不同于一般的ApplicationContext,因为它能处理主题,并找到被关联的servlet

Spring MVC框架的控制器提供一个访问应用程序的行为,此行为通常通过服务接口实现。控制器解析用户输入并将其转换为一个由视图呈现给用户的模型。Spring用一个非常抽象的方式实现一个控制层。允许用户创建多种用途的控制器、

@Controller注解

该注解表名该类扮演控制器的角色,Spring不需要你继承任何其他控制器基类或引用Servlet API

@RequestMapping注解

该注解是用来映射一个URL到一个类或一个特定的处理方法上。

如果web项目使用了经典的三层MVC结构后,对于控制层Controller,业务层Service和持久层Model的三层结构

控制层使用标签 @Controller,业务层使用标签@Service,持久层使用标签@Repository。当然这三个标签的功能都是一样的,主要是为了更容易区分MVC的结构。同时对于持久层DAO中每个调用数据库的方法都要加上@Transactional事物的标签,保证数据库操作方法的事务性。

 

技术参考

http://www.codeceo.com/article/69-spring-interview-questions.html#0-tsina-1-98150-397232819ff9a47a7b7e80a40613cfe1

http://blog.csdn.net/xyh820/article/details/7303330/

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值