• 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 的名称,这样就可以解决异常。

  • 相关阅读:
    CentOS中rpm和yum到底有什么区别?
    Anaconda是个什么东东?
    Hadoop入门学习整理(三)
    Hadoop入门学习整理(二)
    CentOS6.10下安装MongoDB和Redis
    Linux 系统中环境变量/etc/profile、/etc/bashrc、~/.bashrc的区别
    一些想法
    时间
    周末
    条件
  • 原文地址:https://www.cnblogs.com/guoxingbo/p/5990653.html
Copyright © 2020-2023  润新知