A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

5、 Spring 注解
Spring 在 2.5 版本以后开始支持用注解的方式来配置依赖注入。 可以用注解的方式来替代
XML 方式的 bean 描述, 可以将 bean 描述转移到组件类的内部, 只需要在相关类上、 方法上
或者字段声明上使用注解即可。 注解注入将会被容器在 XML 注入之前被处理, 所以后者会
覆盖掉前者对于同一个属性的处理结果。
注解装配在 Spring 中是默认关闭的。所以需要在 Spring 文件中配置一下才能使用基于注解
的装配模式。 如果你想要在你的应用程序中使用关于注解的方法的话, 请参考如下的配置。
<beans>
<context:annotation-config/>
<!-- bean definitions go here -->
</beans>
在 <context: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 id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 配置 Advice 通知 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<!-- 配置切点切面 -->
<aop:config>
<aop:pointcut id="interceptorPointCuts"
expression="execution(* com.bluesky.spring.dao.*.*(..))" />
<aop:advisor advice-ref="txAdvice"
pointcut-ref="interceptorPointCuts" />
</aop:config>
SpringMVC 框架
9.2.1 SpringMVC 的执行流程
  
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. 将渲染结果返回给客户端。



8.png (422.84 KB, 下载次数: 11)

8.png

2 个回复

倒序浏览
一个人一座城0.0 来自手机 中级黑马 2019-2-21 09:12:51
沙发
看一看。
回复 使用道具 举报
收藏了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马