简化注解shh框架

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简化注解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;

 

 

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

    [email protected]注解--定义控制器(类级别上的注解)action)

      [email protected]注解--定义业务处理类(service)

      [email protected]注解--定义底层数据库处理接口(dao)

      [email protected]注解--实现注入(jdk)

      [email protected]("prototype")--//非单例

 

 

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
<bean id="myIndexAction" class="ssh.action.IndexAction" scope="prototype">
    <property name="is" ref="myIndexService"></property>
</bean>
 
<bean id="myIndexService" class="ssh.service.IndexServiceImpl" scope="prototype">
    <property name="id" ref="myIndexDao"></property>
</bean>
 
<bean id="myIndexDao" class="ssh.dao.IndexDaoImpl" scope="prototype">
    <property name="sf" ref="mySessionFactory"></property>
</bean>

以上是关于简化注解shh框架的主要内容,如果未能解决你的问题,请参考以下文章

SSH项目(struts+spring+hibernate)搭建_代码简化

ssh项目搭建后的简化

框架手写系列---apt注解处理器方式实现ButterKnife框架

使用 SpringCache 简化缓存代码实现

Spring框架--Spring注解开发

博学谷学习记录超强总结,用心分享 | SpringCache常用注解介绍+集成redis