SSH框架使用注解简化代码

摘要:
在使用注释之前,我们需要添加<在applicationContext中。xml文件;上下文beanid=“myNewsAction”class=“news.action.NewsAction”scope=“prototype”>propertyname=“ns”ref=“myNewsService”>propertyname=“nd”ref=“myNewsDao”>

注释的优势:

    1.最简单直接的优势就是减少了配置文件的代码量。

    2.注释和Java代码位于一个文件中,而XML 配置采用独立的配置文件。配置信息和 Java 代码放在一起,有助于增强程序的内聚性。而采用独立的XML 配置文件,程序员在编写一个功能时,往往需要在程序文件和配置文件中不停切换,这种思维上的不连贯会降低开发效率。

 SSH 注解组合使用: 

    SSH框架使用注解简化代码第1张

这里我推荐用最后一种。

我们在使用注解前先要在applicationContext.xml文件中加入

<!-- 自动扫描包,也会自动注入解释器,所以不需要 context:annotation-config -->
    <context:component-scan base-package="news"></context:component-scan>

去掉 context:annotation-config 和用来注入的bean和property

<!-- 原理:自动注入processor解析器,用来解析注解 -->
    <!-- <context:annotation-config/> -->

<bean id="myNewsAction" class="news.action.NewsAction" scope="prototype">
  <property name="ns" ref="myNewsService"></property>
</bean>

<bean id="myNewsService" class="news.service.NewsServiceImpl" scope="prototype">
  <property name="nd" ref="myNewsDao"></property>
</bean>

<bean id="myNewsDao" class="news.dao.NewsDaoImpl" scope="prototype">
  <property name="sf" ref="mySessionFactory" />
</bean>

然后我们在 Action  Service  Dao 类加入对应的注解@Controller@Service@Repository

导入对应包 import org.springframework.stereotype.Controller(Repository  Service);

虽然这些只是规范,不对应写也没关系,不过养成良好的代码习惯比较好,建议大家都要这样写。

这里我就不一一举例了,我们只拿Action举例:

先找到Action类在前面加注解:

@Controller("注入实例的名字")如果不写默认自动找到对应action类名称首字母改为小写

当我们不写的时候注意struts.xml中把class也改成默认名字:

<action name="NewsAction_*" class="默认名字"method="{1}">

@Scope("prototype")非单例 注意:这个如果不写单独运行并不会报错,多人访问就会报错。

 然后我用注释进一步简化 Action  Service  Dao 类,去掉里面set方法。

我们只需要在声明变量的前面加注解@Autowired和@Qualifier("bean的名称")

需要导入这两个包:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

@Autowired可以单独使用,默认情况下使用 @Autowired 注解会自动注入,Spring 容器中匹配的候选 Bean 数目必须有且仅有一个。当找不到一个匹配的 Bean 时,Spring 容器将抛出BeanCreationException 异常,并指出必须至少拥有一个匹配的。所以我们通过 @Qualifier 注释指定注入 Bean 的名称,这样就可以解决异常。

免责声明:文章转载自《SSH框架使用注解简化代码》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Node JS与Electron安装配置SSH的通讯和认证下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Android 如何动态添加 View 并显示在指定位置。

引子 最近,在做产品的需求的时候,遇到 PM 要求在某个按钮上添加一个新手引导动画,引导用户去点击。作为 RD,我哗啦啦的就写好相关逻辑了。自测完成后,提测,PM Review 效果。 看完后,PM 提了个问题,这个动画效果范围能不能再大一点?PM 解释到按钮本身大小不是很大,会导致引导效果不够明显,也会导致用户的点击欲望不够。我想了想,似乎很有道理啊,但...

vue+element ui 的时间控件选择 年月日时分

 前言:工作中用到 vue+element ui 的前端框架,需要选择年月日时分,但element ui官网demo有没有,所以记录一下。转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9304510.html 网站地址:我的个人vue+element ui demo网站  github地址:yuleGH github...

解决map热点与uni-app中map标签冲突的问题。(Vue Render函数应用)

问题描述:   我一张地图的图片,需要做热点,使用的是map-area标签。但当我在uni-app中使用时,却与uni-app中的map标签冲突,map标签自动变成了uni-map标签。 <img src="/static/img/map.png" usemap="#planetmap"> <map name="planetmap" id...

C#:总结页面传值几种方法

 小知识点: 1.  W7自带 .NetFrameWork 3.5, 兼容模式为 高版本号兼容低版本号; 2. WF和WPF都是基于XAML的,可是两者的用途不同。 WF是一种开发框架,将工作流嵌入在.NET Framework应用程序中,所主要用于开发创建工作流应用程序。WF:http://msdn.microsoft.com/zh-cn/librar...

cookie插件——cookie

使用cookie插件后,可以很方便地通过cookie对象保存、读取、删除用户的信息,还能通过cookie插件保存用户的浏览记录,它的调用格式为: 保存:$.cookie(key,value);读取:$.cookie(key),删除:$.cookie(key,null) 其中参数key为保存cookie对象的名称,value为名称对应的cookie值。 例如...

numpy中的ndarray方法和属性

原文地址 NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推。在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量。比如说,二维数组相当于是一个一维数组,而这个一维数组中每个元素又是一个一维数组。所以这个一维数组就是NumPy中的轴(axes),而轴的数量——秩,就是数组的维数。 Numpy库中的...