Annotation(三)——Spring注解开发

阅读更多

 Spring框架的核心功能IoC(Inversion of Control),也就是通过Spring容器进行对象的管理,以及对象之间组合关系的映射。通常情况下我们会在xml配置文件中进行action,service,dao等层的声明,然后并告知框架我们想要的注入方式,然后在类中声明要组合类的getset方法。而通过Spring框架中注解的运用也就主要是解决这类问题的。而框架中另一个核心知识AOP,一种面向横切面的方法编程,在程序中一般都是进行一次设置就可以的,所以都还放在配置文件中。例如声明式事物的设置,一次设置,后边我就不用管了,所以这个没有必要使用注解进行简化。因为工作量都差不多。好了,看一下在Spring中如何使用注解进行开发吧!

 

           一,首先需要在配置文件中增加命名空间的和约束文件:

 

[html]   view plain  copy
 
  1. <beans ...  
  2.         xmlns:context="http://www.springframework.org/schema/context"  
  3.     xsi:schemaLocation="  
  4.         ...  
  5.         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd  
  6.         ">  

 

 

         二,开启Spring的注解功能,这样Spring环境才会进行指定位置的扫描,进行类之间的关联组合:

[html]   view plain  copy
 
  1.   
  2.     bean>  

 

           而,注解开发的方法如何进行sessionFactory的注入呢?由于Dao层继承了父类HibernateDaoSupport,而在父类中有这样一个方法:

[java]   view plain  copy
 
  1.       //父类中的sessionFactory的set注入方法  
  2. ublic final void setSessionFactory(SessionFactory sessionFactory) {  
  3. if (this.hibernateTemplate == null || sessionFactory != this.hibernateTemplate.getSessionFactory()) {  
  4.     this.hibernateTemplate = createHibernateTemplate(sessionFactory);  
  5. }  

 

          这是sessionFactoryset注入方法,所以如果我们能够重写此方法,在此方法上进行@Resource注解,即可解决我们的问题,但是可以看到此方法是用final进行修饰的,所以通常情况下,我们采用下边的这种方法进行解决:

[java]   view plain  copy
 
  1. @Repository("orgDao")  
  2. public class OrgDaoImpl extends HibernateDaoSupport implements OrgDao {  
  3.   
  4.     @Resource  
  5.     //自定义了方法,解决了父类中final修饰不能重写的问题  
  6.     public void setSuperSessionFactory(SessionFactory sessionFactory) {  
  7.              //调用了父类的setSessionFactory方法  
  8.         super.setSessionFactory(sessionFactory);  
  9.     }  
  10. }  

 

           这样,Dao层的sessionFactory就进行了注入,我们可以正常编写我们的Dao层代码了。当然了对于Dao层如果我们使用了Ibatis,同样可以使用这种方法进行Ibatis核心对象sqlMapClient的注入。

 

          综上,为Spring框架的注解开发常用注解,总体感觉还是比较简单,最起码相对其它两个框架而言,主要是通过注解完成对象的管理,和对象之间的组合,即SpringIoC功能。注解的开发还是能大大提高我们的开发效率的,但是还是那句话,它在一定程度上违背了OCP原则,所以大力推荐使用注解的开发的前提还是我们的需求比较固定,变动较小。

你可能感兴趣的:(Annotation(三)——Spring注解开发)