`

spring注解来注入属性

    博客分类:
  • java
阅读更多
1. 使用Spring注解来注入属性
1.1. 使用注解以前我们是怎样注入属性的
类的实现:
Java代码
public class UserManagerImpl implements UserManager {  
    private UserDao userDao;  
    public void setUserDao(UserDao userDao) {  
        this.userDao = userDao;  
    }  
    ...  


配置文件:
Java代码
<bean id="userManagerImpl" class="com.kedacom.spring.annotation.service.UserManagerImpl">  
    <property name="userDao" ref="userDao" />  
</bean>  
<bean id="userDao" class="com.kedacom.spring.annotation.persistence.UserDaoImpl">  
    <property name="sessionFactory" ref="mySessionFactory" />  
</bean> 


1.2. 引入@Autowired注解(不推荐使用,建议使用@Resource)
类的实现(对成员变量进行标注)
Java代码
public class UserManagerImpl implements UserManager {  
    @Autowired 
    private UserDao userDao;  
    ...  


或者(对方法进行标注)
Java代码
public class UserManagerImpl implements UserManager {  
    private UserDao userDao;  
    @Autowired 
    public void setUserDao(UserDao userDao) {  
        this.userDao = userDao;  
    }  
    ...  


配置文件
Java代码
<bean id="userManagerImpl" class="com.kedacom.spring.annotation.service.UserManagerImpl" />  
<bean id="userDao" class="com.kedacom.spring.annotation.persistence.UserDaoImpl">  
    <property name="sessionFactory" ref="mySessionFactory" />  
</bean> 

@Autowired可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作。以上两种不同实现方式中,@Autowired的标注位置不同,它们都会在Spring在初始化userManagerImpl这个bean时,自动装配userDao这个属性,区别是:第一种实现中,Spring会直接将UserDao类型的唯一一个bean赋值给userDao这个成员变量;第二种实现中,Spring会调用setUserDao方法来将UserDao类型的唯一一个bean装配到userDao这个属性。

1.3. 让@Autowired工作起来
要使@Autowired能够工作,还需要在配置文件中加入以下代码
Java代码
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" /> 


1.4. @Qualifier
@Autowired是根据类型进行自动装配的。在上面的例子中,如果当Spring上下文中存在不止一个UserDao类型的bean时,就会抛出BeanCreationException异常;如果Spring上下文中不存在UserDao类型的bean,也会抛出BeanCreationException异常。我们可以使用@Qualifier配合@Autowired来解决这些问题。
1. 可能存在多个UserDao实例
Java代码
@Autowired 
public void setUserDao(@Qualifier("userDao") UserDao userDao) {  
    this.userDao = userDao;  


这样,Spring会找到id为userDao的bean进行装配。
2. 可能不存在UserDao实例

Java代码
@Autowired(required = false)  
public void setUserDao(UserDao userDao) {  
    this.userDao = userDao;  



转载自http://blog.sina.com.cn/s/blog_616b57310100fse1.html
分享到:
评论

相关推荐

    Spring注解注入属性

    ### Spring注解注入属性 #### 一、传统方式与注解方式对比 在Spring框架中,依赖注入(DI)是一种核心的设计模式,用于促进松耦合的系统设计,使得组件之间的依赖关系可以在运行时动态地建立,而不是在编译时硬...

    day38 17-Spring的Bean的属性注入:注解方式

    在Spring 2.5版本之后,引入了基于注解的配置,这使得我们可以直接在类或方法上使用注解来声明Bean及其属性。主要的注解有`@Component`、`@Service`、`@Repository`和`@Controller`,它们定义了Bean的角色,而`@...

    spring 普通属性注入

    在Spring框架中,属性注入是核心特性之一,它允许我们通过依赖注入(Dependency Injection, DI)来管理对象的属性,而不是让对象自行创建或查找它们的依赖。这有助于提高代码的可测试性、可维护性和解耦性。下面将...

    (转)Spring 3.0 注解注入详解

    4. **@Value**:这个注解可以用于注入基本类型或字符串值,包括从Spring的环境属性(如`application.properties`)中获取值。例如,`@Value("${property.name}")`可以从配置文件中读取`property.name`的值。 5. **@...

    spring注解注入示例详解.pdf

    Spring提供了多种注解来帮助开发者实现依赖注入,其中包括@Autowired、@Qualifier、@Resource以及@PostConstruct等。下面将详细介绍这些注解的使用方法和区别。 1. @Autowired注解 @Autowired是Spring提供的注解,...

    Spring Ioc 注解 依赖注入

    随着Spring框架的发展,除了XML配置之外,Spring还引入了注解的方式来简化依赖注入的过程。下面介绍几种常用的依赖注入相关的注解: - **@Component**:用于标记一个普通的Java类为Spring管理的Bean。 - **@Service...

    Spring boot工具类静态属性注入及多环境配置详解

    1. Spring Boot工具类静态属性注入:使用@ConfigurationProperties注解将application.yml文件中的配置信息注入到Java类中。 2. 使用@Value注解将application.yml文件中的配置信息注入到Java类的成员变量中。 3. ...

    spring annotation注解

    1. 使用 Spring 注解来注入属性 在使用 Spring 框架之前,我们通常使用 setter 方法来注入属性,例如: Java 代码 ```java public class UserManagerImpl implements UserManager { private UserDao userDao; ...

    Spring属性注入

    2. **Spring注解**:Spring还提供了`@Value`注解来注入简单的值(如字符串、数字等),或从配置文件中读取值。 ```java @Component public class ExampleClass { @Value("${property.name}") private String ...

    基于Spring boot @Value 注解注入属性值的操作方法

    在Spring Boot应用中,`@Value`注解是用于注入属性值的重要工具,它可以方便地从配置文件或者非配置文件中获取数据,并将其赋值给字段或者方法参数。本篇文章将详细阐述`@Value`注解的使用方法,包括如何注入配置...

    day38 11-Spring的Bean的属性的注入:对象属性

    - Spring允许从不同来源(如环境变量、系统属性、配置文件)注入属性,通过`@Value`的`${}`语法引用这些值。 - Spring还支持Profile特性,可以在不同的运行环境中使用不同的配置。 6. **最佳实践** - 避免过多的...

    day38 12-Spring的Bean的属性的注入:名称空间p

    在Spring框架中,Bean的属性注入是核心功能之一,它允许我们通过配置文件或注解来设置Bean实例的属性值,使得对象的初始化更加灵活。本文将深入探讨Spring中的"名称空间p",这是一种用于配置Bean属性注入的方式,...

    使用反射和注解模拟Spring的依赖注入

    这篇博客"使用反射和注解模拟Spring的依赖注入"探讨了如何通过基本的Java特性来实现类似Spring的功能。我们将深入探讨反射和注解这两个关键概念,以及它们如何在模拟依赖注入中发挥作用。 首先,让我们理解反射的...

    day38 14-Spring的Bean的属性的注入:集合属性的注入

    在Spring框架中,Bean的属性注入是核心功能之一,它允许我们通过配置文件或注解来设置Bean的属性值,从而实现对象的依赖管理。在本主题“day38 14-Spring的Bean的属性的注入:集合属性的注入”中,我们将深入探讨...

    spring 设值注入

    总的来说,Spring的设值注入提供了一种灵活的方式,让我们可以在不修改bean代码的情况下,根据不同的环境或需求改变bean的属性值,从而更好地解耦组件,增强软件的可扩展性和适应性。在实际开发中,熟练掌握这一特性...

    javaSpring注解入门[参考].pdf

    1. 使用Spring注解来注入属性 在Spring框架中,我们可以使用注解来实现属性的自动装配。这种方式可以简化我们的配置文件,并提高代码的可读性。 首先,让我们看一下传统的方式是如何实现属性的注入的。在传统的...

    Spring依赖注入——java项目中使用spring注解方式进行注入.rar

    二、Spring注解方式的依赖注入 1. `@Autowired` 注解:这是Spring中最常用的注解,用于自动装配依赖。当Spring容器扫描到这个注解时,会自动寻找类型匹配的bean进行注入。如果存在多个候选bean,可以通过`@...

    关于spring boot中几种注入方法的一些个人看法

    但可以指定 name 属性来指定 beanName,但如果 name 对应的 bean 不存在,则会抛出异常。 3. @Component @Component 是一个泛型注解,可以用来标注任何类,使其成为 Spring 的一个组件。@Component 可以使用在类上...

    Spring学习笔记(8)----属性注入的方式

    本篇学习笔记主要探讨了Spring中的属性注入方式,包括了传统的XML配置注入、注解式注入以及使用Java配置类的方式。 一、XML配置注入 在Spring早期版本中,XML配置文件是定义Bean及其依赖关系的主要方式。属性注入...

    spring的注入方式

    类型注入默认是基于类型匹配的,而名称注入则需要指定`@Qualifier`注解来指定bean的名称。例如: ```java @Autowired private UserRepository userRepository; ``` 或者,如果有多于一个相同类型的bean,可以...

Global site tag (gtag.js) - Google Analytics