【黑马程序员】Java高频面试系列:十二

5、 Spring 注解

Spring 在 2.5 版本以后开始支持用注解的方式来配置依赖注入。 可以用注解的方式来替代

XML 方式的 bean 描述, 可以将 bean 描述转移到组件类的内部, 只需要在相关类上、 方法上

或者字段声明上使用注解即可。 注解注入将会被容器在 XML 注入之前被处理, 所以后者会

覆盖掉前者对于同一个属性的处理结果。

注解装配在 Spring 中是默认关闭的。所以需要在 Spring 文件中配置一下才能使用基于注解

的装配模式。 如果你想要在你的应用程序中使用关于注解的方法的话, 请参考如下的配置。

<beans>

<annotation-config>

在 <annotation-config>标签配置完成以后, 就可以用注解的方式在 Spring 中向属性、

方法和构造方法中自动装配变量。

几种比较重要的注解类型:

@Required: 该注解应用于设值方法。

@Autowired: 该注解应用于有值设值方法、 非设值方法、 构造方法和变量。

@Qualifier: 该注解和@Autowired 注解搭配使用, 用于消除特定 bean 自动装配的歧义。

JSR-250 Annotations : Spring 支 持 基 于 JSR-250 注 解 的 以 下 注 解 , @Resource 、

@PostConstruct 和 @PreDestroy。

6、 Spring 事务

Spring 支持两种类型的事务管理:

1.编程式事务管理: 这意味你通过编程的方式管理事务, 给你带来极大的灵活性, 但是难维

护。

2.声明式事务管理: 这意味着你可以将业务代码和事务管理分离, 你只需用注解和 XML 配置

来管理事务。

Spring 事务配置示例(使用 tx 标签配置的拦截器)

<bean>

class="org.springframework.orm.hibernate3.HibernateTransactionManager">

<property>

/<bean>

<advice>

<attributes>

<method>

<config>

<pointcut>

expression="execution(* com.bluesky.spring.dao.*.*(..))" />

<advisor>

pointcut-ref="interceptorPointCuts" />

SpringMVC 框架

9.2.1 SpringMVC 的执行流程

【黑马程序员】Java高频面试系列:十二

9.2.2 SpringMVC 执行流程描述:

1. 用户向服务器发送请求, 请求被 sssSpringMVC 前端控制器 DispatcherServlet 捕获;

2. DispatcherServlet 对请求 URL 进行解析,得到请求资源标识符(URI)。然后根据该 URI,调用 HandlerMapping

获得该 Handler 配置的所有相关的对象(包括 Handler 对象以及 Handler 对象对应的拦截器) , 最后以

HandlerExecutionChain 对象的形式返回;

3. DispatcherServlet 根据获得的 Handler, 选择一个合适的 HandlerAdapter; (附注: 如果成功获得

HandlerAdapter 后, 此时将开始执行拦截器的 preHandler 方法)

4. 提取 Request 中的模型数据, 填充 Handler 入参, 开始执行 Handler(Controller)。 在填充 Handler

的入参过程中, 根据你的配置, SpringMVC 将帮你做一些额外的工作:

HttpMessageConveter: 将请求消息(如 Json、 xml 等数据) 转换成一个对象, 将对象转换为指定的响应

信息。

数据转换: 对请求消息进行数据转换。 如 String 转换成 Integer、 Double 等。

数据根式化: 对请求消息进行数据格式化。 如将字符串转换成格式化数字或格式化日期等。

数据验证: 验证数据的有效性(长度、 格式等) , 验证结果存储到 BindingResult 或 Error 中。

5. Handler 执行完成后, 向 DispatcherServlet 返回一个 ModelAndView 对象;

6. 根据返回的 ModelAndView, 选择一个适合的 ViewResolver(必须是已经注册到 SpringMVC 容器中的

ViewResolver)返回给 DispatcherServlet;

7. ViewResolver 结合 Model 和 View, 来渲染视图;

8. 将渲染结果返回给客户端。

【黑马程序员】Java高频面试系列:十二

/<advisor>

/<pointcut>


分享到:


相關文章: