• 简化注解shh框架


    找到上次我们搭建的SSH框架

    浏览一下原始的applicationContext.xml文件中的部分配置。

     1 <bean id="myIndexAction" class="ssh.action.IndexAction" scope="prototype">
     2 
     3     <property name="is" ref="myIndexService"></property>
     4 
     5 </bean>
     6 
     7  
     8 
     9 <bean id="myIndexService" class="ssh.service.IndexServiceImpl" scope="prototype">
    10 
    11     <property name="id" ref="myIndexDao"></property>
    12 
    13 </bean>
    14 
    15  
    16 
    17 <bean id="myIndexDao" class="ssh.dao.IndexDaoImpl" scope="prototype">
    18 
    19     <property name="sf" ref="mySessionFactory"></property>
    20 
    21 </bean> 

    上面的代码中可以看出,action控制层访问的是service业务层,而service业务层则是访问dao数据层。 
    每个类有什么属性要注入都显得非常明显,所以本例要做的就是把applicationContext.xml配置文件进行简化。

    接着把applicationContext.xml文件中代码简化成如下代码:

    1   <bean id="myIndexAction" class="ssh.action.IndexAction" scope="prototype"></bean>
    2 
    3   <bean id="myIndexService"class="ssh.service.IndexServiceImpl" scope="prototype"></bean>
    4 
    5   <bean id="myIndexDao" class="ssh.dao.IndexDaoImpl" scope="prototype"></bean> 

    这里只是绑定了每个bean,并没有为其注入属性。其实是用到了Spring的@Autowired和@Qualifier这两个注解。

    1   //属性的注解 
    2     @Autowired
    3     @Qualifier("mySessionFactory")
    4     private SessionFactory sf; 

    在Qualifier注解中我们申明其引用的是哪一个bean,Spring 便会自动为其注入这个实例,并且可以省略属性的set方法。

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     4 
     5 xmlns:p="http://www.springframework.org/schema/p"
     6     xmlns:aop="http://www.springframework.org/schema/aop" 
     7 
     8 xmlns:context="http://www.springframework.org/schema/context"
     9     xmlns:jee="http://www.springframework.org/schema/jee" 
    10 
    11 xmlns:tx="http://www.springframework.org/schema/tx"
    12     xsi:schemaLocation="    
    13             http://www.springframework.org/schema/aop 
    14 
    15 http://www.springframework.org/schema/aop/spring-aop-4.2.xsd  
    16             http://www.springframework.org/schema/beans 
    17 
    18 http://www.springframework.org/schema/beans/spring-beans-4.2.xsd  
    19             http://www.springframework.org/schema/context 
    20 
    21 http://www.springframework.org/schema/context/spring-context-4.2.xsd
    22             http://www.springframework.org/schema/jee 
    23 
    24 http://www.springframework.org/schema/jee/spring-jee-4.2.xsd  
    25             http://www.springframework.org/schema/tx 
    26 
    27 http://www.springframework.org/schema/tx/spring-tx-4.2.xsd"
    28 //<context:component-scan base—package="ssh"></context:component-scan>,通过这个节点的base-package属性可以配置Spring需要自动注入的哪个基包
    29 <!-- 基于ssh这个包自动扫描其中的类 ,也会自动注入解析器--> 30 <context:component-scan base-package="ssh"></context:component-scan> 31 32 <!-- 引入外部属性文件 --> 33 <context:property-placeholder location="classpath:jdbc.properties" /> 34 35 <bean id="mySessionFactory" 36 class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> 37 </bean> 38 39 <bean id="myDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 40 41 </bean> 42 43 </beans>

    使用spring注解来对类进行注解: @Controller action层 、  @Service service层 、  @Repository dao层;

    1 //action类的类注解
    2 @Controller("myIndexAction")
    3 @Scope("prototype")
    4 public class IndexAction extends ActionSupport {
    5     //属性的注解
    6     @Autowired
    7     //@Qualifier("myIndexService")
    8     private IndexService is;
    1 //Service类的类注解
    2 @Service("myIndexService")
    3 @Scope("prototype")
    4 public class IndexServiceImpl implements IndexService {
    5    
    6    //属性的注解
    7     @Autowired
    8     //@Qualifier("myIndexDao")
    9     private IndexDao id;
    1 //dao类的类注解
    2 @Repository("myIndexDao")
    3 @Scope("prototype")    
    4 public class IndexDaoImpl implements IndexDao {
    5     //属性的注解  
    6     @Autowired
    7     //@Qualifier("mySessionFactory")
    8     private SessionFactory sf;

      (注).了解一些我们常用的注解

        1.@Controller注解--定义控制器(类级别上的注解)action)

          2.@service注解--定义业务处理类(service)

          3.@repository注解--定义底层数据库处理接口(dao)

          4.@Resource注解--实现注入(jdk)

          5.@Scope("prototype")--//非单例

  • 相关阅读:
    常用DOS命令
    Intellij IDEA debug断点调试技巧与总结详解篇
    IDEA中常用函数的快捷键及自定义方法模板
    System.out.println()的真实含义
    盘点一下Github上开源的编程面试/学习相关的仓库
    IntelliJ IDEA
    JAVA基础——接口(全网最详细教程)
    Css基础
    CSS属性(根据继承性分为两类)
    HTML5新增标签(新增27个标签,废弃16个标签)
  • 原文地址:https://www.cnblogs.com/gushendanying/p/5969258.html
Copyright © 2020-2023  润新知