热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

#Java内部培训#SSM框架的整合

SSM(spring、SpringMVC和M

点击上方“子衿技术论坛” 一键关注技术干货


作者介绍

闫德栋:曾参与开发集团外网项目电动汽车项目及MDS生产管理系统等。目前在瑞腾项目组从事开发,在工作闲暇之余分享瑞腾项目主要用的基本框架以及java的一些知识。后续有时间再给大家写一下SSh框架和数据库、存储等相关文章。想学习的伙伴可以看看,大家共同进步。


SSM(spring、SpringMVC和Mybatis)

Spring是一个开源框架,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架


环境准备:

eclipsejdk1.6tomcat6.0


第一步:创建一个Dynamic WebProject


导入ssm需要的jar包。


第二步:配置xml文件

1、配置web.xml


2、创建applicationContext.xml文件




3、创建映射处理器spring-servlet.xml


4、mybatis的配置文件


第三步:写java后台

1、控制层,也就是映射处理器将请求映射到控制层的某个具体的方法上。


2、service层


3、dao层

4、创建model


5、mybatissqlmapper 映射文件


注解:

一、 

隐式地向Spring容器中注册AutowiredAnnotationBeanPostProcessorCommonAnnotationBeanPostProcessorPersistenceAnnotationBeanPostProcessorRequiredAnnotationBeanPostProcessor 4 BeanPostProcessor


对这个结果类做个解释: 

1、如果你想使用@Autowired注解,那么就必须事先在Spring 容器中声明AutowiredAnnotationBeanPostProcessor Bean

2、如果想使用@Resource @PostConstruct@PreDestroy等注解就必须声明CommonAnnotationBeanPostProcessor

3、如果想使用@PersistenceContext注解,就必须声明PersistenceAnnotationBeanPostProcessorBean 

4、如果想使用@Required的注解,就必须声明RequiredAnnotationBeanPostProcessorBean


4个类的传统注入方式:


 
一般来说,这些注解我们还是比较常用,尤其是Antowired的注解,在自动注入的时候更是经常使用,所以如果总是需要按照传统的方式一条一条配置显得有些繁琐和没有必要,于是spring给我们提供 的简化配置方式,自动帮你完成声明。


二、


        
配置项不但启用了对类包进行扫描以实施注释驱动Bean 定义的功能,同时还启用了注释驱动自动注入的功能(即还隐式地在内部注册了AutowiredAnnotationBeanPostProcessor CommonAnnotationBeanPostProcessor),因此当使用 后,就可以将 移除了。


三、

相当于注册了DefaultAnnotationHandlerMappingAnnotationMethodHandlerAdapter两个bean,配置一些messageconverter。即解决了@Controller注解的使用前提配置。


这也是spring3.0中新增加的。


@Controller

@Controller对应表现层的Bean,也就是Action

例如:


使用@Controller注解标识UserAction之后,就表示要把UserAction交给Spring容器管理,在Spring容器中会存在一个名字为"userAction"action,这个名字是根据UserAction类名来取的。注意:如果@Controller不指定其value@Controller】,则默认的bean名字为这个类的类名首字母小写,如果指定value@Controller(value="UserAction")】或者【@Controller("UserAction")】,则使用value作为bean的名字。


@Service

@Service对应的是业务层Bean

例如:


@Service("userService")注解是告诉Spring,当Spring要创建UserServiceImpl的的实例时,bean的名字必须叫做"userService",这样当Action需要使用UserServiceImpl的的实例时,就可以由Spring创建好的"userService",然后注入给Action:在Action只需要声明一个名字叫“userService”的变量来接收由Spring注入的"userService"即可,具体代码如下:


注意:在Action声明的“userService”变量的类型必须是“UserServiceImpl”或者是其父类“UserService”,否则由于类型不一致而无法注入,由于Action中的声明的“userService”变量使用了@Resource注解去标注,并且指明了其name = "userService",这就等于告诉Spring,说我Action要实例化一个“userService”,你Spring快点帮我实例化好,然后给我,当Spring看到userService变量上的@Resource的注解时,根据其指明的name属性可以知道,Action中需要用到一个UserServiceImpl的实例,此时Spring就会把自己创建好的名字叫做"userService"的UserServiceImpl的实例注入给Action中的“userService”变量,帮助Action完成userService的实例化,这样在Action中就不用通过“UserServiceuserService = new UserServiceImpl();”这种最原始的方式去实例化userService了。如果没有Spring,那么当Action需要使用UserServiceImpl时,必须通过“UserServiceuserService = new UserServiceImpl();”主动去创建实例对象,但使用了Spring之后,Action要使用UserServiceImpl时,就不用主动去创建UserServiceImpl的实例了,创建UserServiceImpl实例已经交给Spring来做了,Spring把创建好的UserServiceImpl实例给Action,Action拿到就可以直接用了。Action由原来的主动创建UserServiceImpl实例后就可以马上使用,变成了被动等待由Spring创建好UserServiceImpl实例之后再注入给Action,Action才能够使用。这说明Action对“UserServiceImpl”类的“控制权”已经被“反转”了,原来主动权在自己手上,自己要使用“UserServiceImpl”类的实例,自己主动去new一个出来马上就可以使用了,但现在自己不能主动去new“UserServiceImpl”类的实例,new“UserServiceImpl”类的实例的权力已经被Spring拿走了,只有Spring才能够new“UserServiceImpl”类的实例,而Action只能等Spring创建好“UserServiceImpl”类的实例后,再“恳求”Spring把创建好的“UserServiceImpl”类的实例给他,这样他才能够使用“UserServiceImpl”,这就是Spring核心思想“控制反转”,也叫“依赖注入”,“依赖注入”也很好理解,Action需要使用UserServiceImpl干活,那么就是对UserServiceImpl产生了依赖,Spring把Acion需要依赖的UserServiceImpl注入(也就是“给”)给Action,这就是所谓的“依赖注入”。对Action而言,Action依赖什么东西,就请求Spring注入给他,对Spring而言,Action需要什么,Spring就主动注入给他。

@Resource和@Autowired的区别

a、@Resource默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会按照类型来装配注入;

b、@Autowired默认是按照类型装配注入的,如果想按照名称来转配注入,则需要结合@Qualifier一起使用;

c、@Resource注解是又J2EE提供,而@Autowired是由spring提供,故减少系统对spring的依赖建议使用 @Resource的方式;

d、 @Resource和@Autowired都可以书写标注在字段或者该字段的setter方法之上。

联系我们


子衿技术公众号邀请IT界技术大牛激扬文字,发表真知灼见,篇篇干货。

我们依托南瑞集成实验室,开展线下交流,动手实践,欢迎您的加入!

地址:南京市江宁区诚信大道19号南京南瑞集团公司信息系统集成分公司

电话:025-81095705




欢迎扫码关注子衿技术

1)推送在【子衿技术】平台的文章,阅读量超过1000,该文章作者可获赠礼品。

2)投稿数量较多的作者可获赠礼品。

3)定期从关注的用户中抽取3名幸运关注用户,这3名幸运用户可获赠礼品。


 技术干货文章随时欢迎向“子衿技术团队”订阅号投稿。

 投稿邮箱:xx.miaojingwen@163.com



推荐阅读
  • Eclipse 中 JSP 开发环境配置指南
    本文详细介绍了如何在 Eclipse 集成开发环境中配置 JSP 运行环境,包括必要的软件下载、Tomcat 服务器的配置以及常见问题的解决方法。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • Java EE CDI:解决依赖关系冲突的实例
    在本教程中,我们将探讨如何在Java EE的CDI(上下文和依赖注入)框架中有效解决依赖关系的冲突问题。通过学习如何使用限定符,您将能够为应用程序的不同客户端提供多种接口实现,并确保每个客户端都能正确调用其所需的实现。 ... [详细]
  • 本文介绍了如何利用 Spring Boot 和 Groovy 构建一个灵活且可扩展的动态计算引擎,以满足钱包应用中类似余额宝功能的推广需求。我们将探讨不同的设计方案,并最终选择最适合的技术栈来实现这一目标。 ... [详细]
  • 本文详细介绍了如何使用 PHP 接收并处理微信支付的回调结果,确保支付通知能够被正确接收和响应。 ... [详细]
  • SpringMVC RestTemplate的几种请求调用(转)
    SpringMVCRestTemplate的几种请求调用(转),Go语言社区,Golang程序员人脉社 ... [详细]
  • springMVC JRS303验证 ... [详细]
  • 本文详细介绍了如何正确安装Java EE SDK,并解决在安装过程中可能遇到的问题,特别是关于servlet代码在Apache Tomcat 10中无法运行的情况。 ... [详细]
  • 本文探讨如何利用Java反射技术来模拟Webwork框架中的URL解析过程。通过这一实践,读者可以更好地理解Webwork及其后续版本Struts2的工作原理,尤其是它们在MVC架构下的角色。 ... [详细]
  • 本文探讨了浏览器的同源策略限制及其对 AJAX 请求的影响,并详细介绍了如何在 Spring Boot 应用中优雅地处理跨域请求,特别是当请求包含自定义 Headers 时的解决方案。 ... [详细]
  • 深入分析十大PHP开发框架
    随着PHP技术的发展,各类开发框架层出不穷,成为了开发者们热议的话题。本文将详细介绍并对比十款主流的PHP开发框架,旨在帮助开发者根据自身需求选择最合适的工具。 ... [详细]
  • 本文介绍了Java语言开发的远程教学系统,包括源代码、MySQL数据库配置以及相关文档,适用于计算机专业的毕业设计。系统支持远程调试,采用B/S架构,适合现代教育需求。 ... [详细]
  • 本文提供了详细的步骤,介绍如何将基于Maven的Java EE项目从Eclipse IDE部署到JBoss应用服务器上。适合初学者和中级开发者参考。 ... [详细]
  • 尽管PHP是一种强大且灵活的Web开发语言,但开发者在使用过程中常会陷入一些典型的陷阱。本文旨在列出PHP开发中最为常见的10种错误,并提供相应的预防建议。 ... [详细]
  • 本文探讨了如何在 Spring 3 MVC 应用程序中配置 MySQL 数据库连接,通过 XML 配置实现 JDBC 直接操作数据库,而不使用 Hibernate 等额外框架。 ... [详细]
author-avatar
admin
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有