Spring中属性注入的方式有三种:
1.使用属性setter方法注入
2.使用构造器注入
3.使用注解方式注入
使用属性setter方法注入
使用属性setter方法注入就是给属性添加set()方法,在前面都是使用这种方法。
package com.szy.spring.service;
import com.szy.spring.dao.PersonDao;
public class UserServiceImplBySetter implements UserService
{
private PersonDao personDao;
public void show()
{
personDao.show();
}
public PersonDao getPersonDao()
{
return personDao;
}
public void setPersonDao(PersonDao personDao)
{
this.personDao = personDao;
}
}
然后在配置文件中如下配置
<bean id="personDao" class="com.szy.spring.dao.PersonDaoBean"/>
<!-- 使用属性Setter方法注入配置 -->
<bean id="userService1" class="com.szy.spring.service.UserServiceImplBySetter">
<property name="personDao" ref="personDao"></property>
</bean>
使用构造器注入
使用构造器注入就是在类中添加含参构造函数
package com.szy.spring.service;
import com.szy.spring.dao.PersonDao;
public class UserServiceImplConstructor implements UserService
{
private PersonDao personDao;
private String name;
public UserServiceImplConstructor()
{
}
public UserServiceImplConstructor(PersonDao personDao, String name)
{
this.personDao = personDao;
this.name = name;
}
public void show()
{
personDao.show();
System.out.println("name属性:"+name);
}
}
下面就是在配置文件中添加配置信息,给每个参数注入值
<bean id="personDao" class="com.szy.spring.dao.PersonDaoBean"/>
<!-- 使用构造器参数方法注入配置 -->
<bean id="userService2" class="com.szy.spring.service.UserServiceImplConstructor">
<constructor-arg index="0" type="com.szy.spring.dao.PersonDao" ref="personDao"/>
<constructor-arg index="1" value="Kuka"/>
</bean>
注意:constructor-arg index是从0开始的
使用注解方式注入
如果使用前面的两种方法,配置文件将会显得很臃肿,因此我们可以使用注解的方式注入,使用注解方式注入有两种方法,第一种使用javax.annotation.Resource中提供的注解方式方法如下:
package com.szy.spring.service;
import javax.annotation.Resource;
import com.szy.spring.dao.PersonDao;
public class UserServiceImplByAnnotation4Resource implements UserService
{
//@Resource默认是按照名称装配,找不到与名称匹配的bean时按类型装配
@Resource(name="personDao")private PersonDao personDao;
public void show()
{
personDao.show();
}
// 下面方法同样可以
// @Resource
// public void setPersonDao(PersonDao personDao)
// {
// this.personDao = personDao;
// }
}
此时配置文件要做相应的改变
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<context:annotation-config/>
<bean id="personDao" class="com.szy.spring.dao.PersonDaoBean"/>
<bean id="userService" class="com.szy.spring.service.UserServiceImplByAnnotation4Autowired">
</bean>
</beans>
注意添加这句配置信息
<context:annotation-config/>
第二中方式就是使用spring提供的注解方式
org.springframework.beans.factory.annotation.Autowired;
注入使用时需要导入spring目录lib\j2ee\common-annotations.jar这个包
使用方法如下:
package com.szy.spring.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import com.szy.spring.dao.PersonDao;
public class UserServiceImplByAnnotation4Autowired implements UserService
{
//@Autowired默认使用类型进行装配,
@Autowired private PersonDao personDao;
// 如果使用按名称进行装配,则需要如下
// @Autowired @Qualifier("personDao")private PersonDao personDao;
public void show()
{
personDao.show();
}
}
配置文件和上面一样。
在使用时建议使用@Resource,因为@Resource不依赖于spring框架。
- 大小: 50.3 KB
分享到:
相关推荐
在“Spring学习笔记(11)----自定义属性编辑器”这篇博文中,作者深入探讨了如何自定义属性编辑器以满足特定需求。 首先,我们需要了解属性编辑器的工作原理。当IoC容器读取配置文件时,如果发现一个属性值需要...
在本篇 Spring 学习笔记中,我们将探讨 Spring 的入门、优点、组成以及重要的IOC理论。 1. **Spring 简介** Spring 是一个开源的、免费的 Java 框架,它的目标是减少企业级开发的复杂性。它集成了许多现有的技术,...
NULL 博文链接:https://coolszy.iteye.com/blog/520913
### Spring学习笔记(精华全记录) #### Spring框架概述 Spring框架源自Rod Johnson的个人项目,最初于2002年末发布。Spring并非一开始就作为一个完整的框架出现,而是从一个项目逐步发展而来。随着项目的成熟,...
**JSF2整合Spring3——JSF学习笔记4** 在Java服务器端开发中,JavaServer Faces(JSF)和Spring框架都是重要的技术。JSF是一个用于构建用户界面的MVC(Model-View-Controller)框架,而Spring则是一个全面的企业级...
本篇学习笔记将深入剖析Spring依赖注入的原理,通过源码分析帮助我们理解这一核心机制。 首先,依赖注入允许我们解耦组件之间的关系,使得各个组件可以独立地进行开发、测试和维护。在Spring中,DI主要通过两种方式...
### Spring学习笔记知识点详解 #### 一、Spring框架概述 **Spring** 是一个开源的、分层的企业级应用开发框架,旨在简化Java EE应用程序的开发。它的主要目标是提高开发效率,减少耦合度,并提供一种更为简洁的...
"尚学堂Spring学习笔记" 本文档记录了尚学堂Spring学习笔记的重要知识点,涵盖了Spring配置文件的设置、普通属性的注入、自定义属性编辑器、公共属性的注入、Spring注解等内容。 一、Spring配置文件的设置 在...
### Spring.NET 学习笔记 — 控制反转 #### 一、控制反转(IoC)概念解析 控制反转(Inversion of Control,简称IoC)是一种软件设计思想,它改变了传统对象之间的依赖关系管理方式,从而降低了组件之间的耦合度。在...
本资料“Spring学习笔记&源码”是基于网易云课堂黑马程序员的Spring四天精通课程,旨在帮助学习者深入理解和实践Spring框架。 笔记部分可能会涵盖以下内容: 1. **Spring概述**:介绍Spring框架的历史、特点和主要...
在本篇Spring学习笔记中,我们将深入探讨如何利用Spring框架的注解方式来实现面向切面编程(AOP)。AOP是一种编程范式,它允许我们定义横切关注点,如日志、事务管理等,然后将这些关注点模块化并插入到应用程序的多...
在本篇“Spring学习笔记之二‘属性注入’”中,我们将深入探讨Spring如何实现属性注入,并通过实例展示其工作原理。 1. **属性注入的概念** 属性注入是指Spring容器通过XML配置或者基于注解的方式,将外部资源(如...
这篇博客文章《Spring学习笔记(7)----装配各种集合类型的属性》可能是对这一主题的深入探讨。 首先,我们要理解Spring的DI机制,它是Spring的核心特性之一,允许我们将组件的依赖关系在运行时自动注入,而不是硬...
### Spring学习笔记知识点详解 #### 一、Spring框架概述 **1.1 什么是Spring** Spring框架是一个开源的轻量级应用框架,主要用于简化企业级应用程序的开发过程。它的核心特性在于提供了一种灵活的方式来组织和...
### Spring学习笔记(最新版) #### 一、Spring框架简介 Spring框架是一个广泛使用的轻量级企业级应用框架,它提供了全面的解决方案来构建复杂的Java应用程序。Spring的核心特性包括依赖注入(Dependency Injection,...
在本篇Spring学习笔记中,我们将探讨如何使用Spring框架的注解方式来管理事务,这是一种在现代Java应用中广泛采用的方法。Spring框架以其强大的依赖注入和面向切面编程能力,为事务管理提供了简洁且高效的解决方案。...
**Spring Boot核心技术详解** Spring Boot是由Pivotal团队提供的全新框架,其设计目标是为了简化Spring应用的...希望这份学习笔记能帮助你深入理解和掌握Spring Boot的精髓,祝你在Spring Boot的学习之路上一帆风顺!
以下将详细介绍Spring学习笔记中的主要知识点。 **面向抽象编程** 面向抽象编程是一种设计原则,强调在代码中使用接口或抽象类,而不是具体实现类。这使得系统更具有灵活性,易于扩展和维护。在Spring框架中,我们...