SSH框架使用注解简化代码

注释的优势:

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

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

 SSH 注解组合使用: 

    

这里我推荐用最后一种。

 

我们在使用注解前先要在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 的名称,这样就可以解决异常。

posted @ 2016-10-17 20:30  Y.zoro  阅读(879)  评论(1编辑  收藏  举报