`
picluo
  • 浏览: 340431 次
  • 性别: Icon_minigender_1
  • 来自: 大力亚
社区版块
存档分类
最新评论

@Autowired

阅读更多
通过 @Autowired的使用来消除 set ,get方法 - Spring 2.5 JPA hibernate 使用方法的点滴整理(二)
2009-03-06 11:45

我们编写spring 框架的代码时候。一直遵循是这样一个规则:所有在spring中注入的bean 都建议定义成私有的域变量。并且要配套写上 get 和 set方法。虽然可以通过eclipse等工具来自动生成。但是还是会引起程序阅读性上的不便。那么既然注解这么强大。是否可以也把他精简掉呢?

当然可以。这个标签就是@Autowired

Spring 2.5 引入了 @Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。

要实现我们要精简程序的目的。需要这样来处理:

* 在applicationContext.xml中加入:
    <!-- 该 BeanPostProcessor 将自动对标注 @Autowired 的 Bean 进行注入 -->  
    <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>

 


* 修改在原来注入spirng容器中的bean的方法。
     在域变量上加上标签@Autowired,并且去掉 相应的get 和set方法

 

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.springframework.beans.factory.annotation.Autowired;
import com.firemax.test.hibernate.AlcorTCitys;
import com.firemax.test.hibernate.AlcorTCitysDAO;
import com.firemax.test.hibernate.AlcorTCountries;
import com.firemax.test.hibernate.AlcorTCountriesDAO;
import com.firemax.test.hibernate.AlcorTProvinces;
import com.firemax.test.hibernate.AlcorTProvincesDAO;
import com.firemax.test.hibernate.AlcotTDistrict;
import com.firemax.test.hibernate.AlcotTDistrictDAO;
public class CountryService {
     private static Log logger = LogFactory.getLog(CountryService.class);
     @Autowired
     private AlcorTCountriesDAO alcorTCountriesDAO;
     @Autowired
     private AlcorTProvincesDAO alcorTProvincesDAO;
     @Autowired
     private AlcorTCitysDAO          alcorTCitysDAO;
     @Autowired
     private AlcotTDistrictDAO       alcotTDistrictDAO;
     public CountryService(){
     }
     /**修改一个国家信息
      * @param alcorTCountries
      * @throws Exception
      */
     public void updateCountry(AlcorTCountries alcorTCountries ) throws Exception{
         this.alcorTCountriesDAO.update(alcorTCountries);
     }
     ....
     //这里去掉了哪些DAO 变量的get 和set 方法。
}

 

 

* 在applicatonContext.xml中 把原来 引用的<porpery >标签也去掉。

 

         <bean id="CountryService" class="com.firemax.test.service.CountryService">
                  <property name="alcorTCountriesDAO" ref="AlcorTCountriesDAO" />
                  <property name="alcorTProvincesDAO" ref="AlcorTProvincesDAO" />
                  <property name="alcorTCitysDAO" ref="AlcorTCitysDAO" />
                 <property name="alcotTDistrictDAO" ref="AlcotTDistrictDAO" />
          </bean>

修改成

          <bean id="CountryService" class="com.firemax.test.service.CountryService">
                
         </bean>

 

当然,我们也可以在构造函数上使用@Auwowired 注解 。如果构造函数有两个入参,分别是 bean1 和 bean2,@Autowired 将分别寻找和它们类型匹配的 Bean,将它们作为 CountryService (Bean1 bean1 ,Bean2 bean2) 的入参来创建 CountryService Bean。

分享到:
评论
3 楼 isaiahzhong 2012-12-19  
          依赖注入我记得好像是两种,一种的set方法,一种的通过构造方法,@Autowired是那一种?
2 楼 mimimao0901 2011-11-30  
一:引入spring-beans-2.5.6.jar

二:在applicationContext.xml中加入:
    <!-- 该 BeanPostProcessor 将自动对标注 @Autowired 的 Bean 进行注入 -->     
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>

三:在需要用spring容器中的bean的地方定义该bean的私有成员变量,并且加上如下。且不需要提供get和set方法。    

    @Autowired
    private BusinessManager businessManager;

四:配置文件内容:
     <bean id="login" class="login.LoginAction"  scope="prototype"/>
     <bean id="businessManager" class="basic.BusinessManagerImpl"   scope="prototype"/>
1 楼 king_108 2009-12-23  
spring 2.54 就有这个功能了,如果在每个类上方 加个 @SERVICE  @Component
等,连XML 都不需要配

相关推荐

    通过@Autowired注解注入bean的顺序,以及@bean注入.rar

    `@Autowired`和`@Bean`是两个关键注解,它们在实现DI时起着重要作用。让我们深入探讨这两个注解的工作原理,以及它们在注入bean时的顺序。 `@Autowired`注解由Spring提供,用于自动装配bean的依赖。当我们在字段、...

    (转)Spring中@Autowired注解和@Resource注解的区别

    在Spring框架中,`@Autowired`和`@Resource`注解是两个常见的依赖注入(DI, Dependency Injection)工具,它们都是用来解决组件之间的耦合问题,使得代码更加灵活和可测试。然而,这两个注解在具体使用时有一些关键性...

    SSH笔记-通过@Autowired配置注入关系

    在Spring框架中,`@Autowired`注解是一个关键特性,用于自动装配Bean的依赖。它极大地简化了传统XML配置中的bean依赖注入过程。本笔记将深入探讨如何在Spring 4中利用`@Autowired`注解配置注入关系,以及它与前一篇...

    Spring使用@Autowired注解自动装配

    在Spring框架中,`@Autowired`注解是一个关键特性,用于简化依赖注入的过程。依赖注入是一种设计模式,它允许我们解耦代码,提高模块的可测试性和可维护性。在这个主题中,我们将深入探讨`@Autowired`的工作原理、...

    Spring@Autowired注解与自动装配.rar

    在Spring框架中,`@Autowired`注解是一个关键特性,用于实现依赖注入(Dependency Injection,简称DI)。依赖注入是设计模式中的一个重要概念,它有助于降低组件之间的耦合度,提高代码的可测试性和可维护性。`@...

    HibernateDaoSupport 与@Autowired

    在Java开发领域,尤其是Spring框架的应用中,`HibernateDaoSupport`和`@Autowired`是两个非常重要的概念。它们分别代表了Hibernate对DAO层的支持以及Spring框架的依赖注入机制。接下来,我们将深入探讨这两个知识点...

    Spring注解@Resource和@Autowired.doc

    Spring 注解@Resource 和@Autowired Spring 框架中提供了两个重要的注解,分别是@Resource 和@Autowired,它们都是用于 bean 的自动装配的。了解这两个注解的区别和使用场景是非常重要的。 首先,@Autowired 是 ...

    【Java面试】@Resource 和 @Autowired 的区别.doc

    @Resource 和 @Autowired 的区别 在 Spring 框架中,@Resource 和 @Autowired 是两种常用的依赖注入方式,但是它们之间存在着一些关键的区别。 首先,让我们来了解 @Autowired 注解。@Autowired 是 Spring 框架...

    自定义标签中@Autowired的属性为null

    自定义标签中@Autowired的属性为null 解决办法:两步 1.新建一个类SpringContext,实现接口ApplicationContextAware; 2.spring.xml中添加 3.使用SpingContext.getBean("bean名");获取

    @Autowired 注解是如何实现的?(csdn)————程序.pdf

    【@Autowired注解详解及其实现原理】 在Spring框架中,`@Autowired`注解是核心的依赖注入(Dependency Injection,DI)工具,它允许开发者自动地将Bean实例注入到需要的地方,无需显式地通过setter方法或构造函数来...

    Spring In Action 使用@Autowired 和@ Resource 自动装配Bean

    在Spring框架中,`@Autowired`和`@Resource`都是用于自动装配Bean的重要注解,它们简化了依赖注入的过程,使得代码更加简洁、易于维护。本文将深入探讨这两个注解的使用、区别以及如何在实际开发中应用它们。 首先...

    Spring Ioc源码分析系列--@Autowired注解的实现原理.doc

    Spring Ioc源码分析系列--@Autowired注解的实现原理 @ Автоwired注解是 Spring Framework 中的一个重要组件,它提供了自动装配的功能,能够将 Bean 之间的依赖关系自动解析和注入。今天,我们将深入探讨 @...

    12 @Autowired是如何工作的?-Spring注解源码深度揭秘-慕课专栏1

    在Spring框架中,`@Autowired`注解是一个关键的依赖注入(DI)工具,它极大地简化了组件之间的关联。本文将深入探讨`@Autowired`的工作原理以及其在Spring中的实现方式。 首先,`@Autowired`的基本作用是自动装配Bean...

    详解Spring依赖注入:@Autowired,@Resource和@Inject区别与实现原理

    Spring 依赖注入:@Autowired,@Resource 和@Inject 区别与实现原理 Spring 依赖注入是指在应用程序中将对象之间的依赖关系自动装配的过程。Spring 框架提供了多种依赖注入方式,包括 @Autowired、@Resource 和@...

    BeanPostProcessor实现注入的@Autowired注入的对象是增强的代理对象.rar

    当我们谈论"BeanPostProcessor实现注入的@Autowired注入的对象是增强的代理对象"时,实际上是在讨论如何通过`BeanPostProcessor`来对`@Autowired`注入的bean进行代理增强。 首先,让我们了解`@Autowired`注解的工作...

    Spring使用@Autowired为抽象父类注入依赖代码实例

    Spring使用@Autowired为抽象父类注入依赖代码实例 Spring框架中,使用@Autowired注解可以将依赖项注入到Bean中,但是当我们需要将依赖项注入到抽象父类时,会遇到一些问题。如果我们直接使用@Autowired注解在抽象...

    1.@Resource是按名称进行注入的,属于java自带的。@Autowired是按类型进行注入的,属于Spring。.pdf

    Spring框架是Java领域中实现DI的典型代表,提供了多种注解来支持这一机制,其中两个常用的注解是`@Resource`和`@Autowired`。虽然它们都可以用来实现依赖注入,但它们的用法和原理有所不同。 首先,`@Resource`注解...

    Intellij IDEA如何去掉@Autowired 注入警告的方法

    Intellij IDEA如何去掉@Autowired 注入警告的方法 在本篇文章中,我们将探讨如何在Intellij IDEA中去掉@Autowired 注入警告的方法。这个问题是很多开发者在使用Spring框架和Mybatis时经常遇到的问题。 首先,让...

    因Spring AOP导致@Autowired依赖注入失败的解决方法

    Spring AOP 导致@Autowired 依赖注入失败的解决方法 Spring AOP(Aspect-Oriented Programming,面向切面编程)是一种编程技术,它允许开发者在不修改源代码的情况下,增加新的功能。然而,在使用 Spring AOP 时,...

    详解SpringBoot 多线程处理任务 无法@Autowired注入bean问题解决

    SpringBoot 多线程处理任务中无法@Autowired注入bean问题解决 在 SpringBoot 应用程序中,多线程处理任务是一个常见的场景,但是,在多线程处理任务中无法使用 @Autowired 注入 bean,这是一个常见的问题。今天,...

Global site tag (gtag.js) - Google Analytics