基本数据类型的注入(将以下代码放到对象的bean中即可)
可以通过构造器注入 <constructor-arg index="0" type="java.lang.String" value="xxx" />
可以通过set方法注入 <property name="name" value="xx" />
可以通过field方式注入(注解)——待续
其它bean的注入
一、通过接口实现注入
这里只关心dao层和service层
思路:在service层声明一个dao层对象,并set该对象;在xml文件中配置dao层和service层的bean,并在service层的bean中使用property属性ref dao层bean
1、编写service层
Service.java
package com.qh.service; public interface Service { public abstract void say(); }
ServiceImp.java实现Service接口
package com.qh.serviceImp; import com.qh.dao.Dao; import com.qh.service.Service; public class ServiceImp implements Service { private Dao dao; //声明的dao层对象 public Dao getDao() { return dao; } public void setDao(Dao dao) { //通过set方法注入,因为该对象不是基本对象 this.dao = dao; } public void say(){ dao.add(); } }
2、编写dao层
Dao.java
package com.qh.dao; public interface Dao { public abstract void add(); }
DaoImp.java实现Dao接口
package com.qh.daoImp; import com.qh.dao.Dao; public class daoImp implements Dao { public void add(){ System.out.println("我是一个add方法"); } }
3、编写spring.xml(放在src根目录下)
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="daoImp" class="com.qh.daoImp.daoImp"></bean> <bean id="serviceImp" class="com.qh.serviceImp.ServiceImp"> <property name="dao" ref="daoImp"></property> </bean> </beans>
注:<property name="dao" ref="daoImp"></property>中的name属性对应的是ServiceImp中的dao对象,ref属性对应的是id为daoImp的bean
4、编写测试类
package com.qh.test; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.qh.serviceImp.ServiceImp; public class SpringTest { @Test public void test(){ ApplicationContext ax=new ClassPathXmlApplicationContext("spring.xml"); ServiceImp s1=(ServiceImp) ax.getBean("serviceImp"); s1.say(); } }
测试结果:输出 ”我是一个add方法“ 这句话
此实例需要 spring.jar 和commons-logging.jar 两个架包
二、采用内部bean的方式注入(该方法使注入的bean不能被其它bean使用)
将上述实例中的xml文件改为如下即可:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="serviceImp" class="com.qh.serviceImp.ServiceImp"> <property name="dao"> <bean class="com.qh.daoImp.daoImp"/> </property> </bean> </beans>
通过构造器注入基本类型和一般类
将上面的实例中的ServiceImp.java改为如下
import com.qh.dao.Dao; import com.qh.service.Service; public class ServiceImp implements Service { private Dao dao; private String name; public ServiceImp(Dao dao, String name) { this.dao = dao; this.name = name; } public void say(){ System.out.println(name); dao.add(); } }
修改xml文件
<bean id="daoImp" class="com.qh.daoImp.daoImp"></bean> <bean id="serviceImp" class="com.qh.serviceImp.ServiceImp"> <constructor-arg index="0" type="com.qh.dao.Dao" ref="daoImp"></constructor-arg> <constructor-arg index="1" type="java.lang.String" value="xiong"></constructor-arg> </bean>
注:index属性为构造函数参数索引,从0开始;type为参数类型,基本类型可省略
其它文件不变即可
集合的注入
set:private Set<String> set=new HashSet<String>();略set和get方法
xml文件中在对应的bean中加入如下:
<property name="set"> //name属性对应set方法的对象 <set> <value>第一个</value> <value>第二个</value> <value>第三个</value> </set> </property>
测试
for(String temp: s1.getSet()){ System.out.println(temp); }
list:private List<String> list=new ArrayList<String>();和set类似
properties:private Properties properties=new Properties();和set类似
<property name="properties"> <props> <prop key="key1">一点</prop> <prop key="key2">二点</prop> <prop key="key3">三点</prop> </props> </property>
测试
for(Object temp: s1.getProperties().keySet()){ System.out.println(s1.getProperties().getProperty((String) temp)); }
map:private Map<String, String> map=new HashMap<String, String>();和set类似
<property name="map"> <map> <entry key="key1" value="map1"></entry> <entry key="key2" value="map2"></entry> <entry key="key3" value="map3"></entry> </map> </property>
测试
for(Object temp: s1.getMap().keySet()){ System.out.println(s1.getMap().get(temp)); }
总结:通过以上方式进行注入,会使xml文件中的bean的代码很庞大,特别是在大型系统的开发中,为了解决这种情况,spring 2.5 提供了注解
发表评论
-
@transitional事务传播行为和数据库隔离级别
2011-07-31 13:04 1223@transitional事务传播行为 ... -
spring+jdbc组合开发
2011-07-31 10:04 8071、架包:commons-dbcp.jar commons- ... -
spring+jdbc组合开发
2011-07-28 23:13 7spring+jdbc组合开发 1、架包:commons-d ... -
AOP_使用spring框架进行面向切面编程
2011-07-25 21:33 1181用spring实现AOP有两种方 ... -
AOP_基本概念
2011-07-23 00:00 707分散关注 将通用需求功能从不相关类之中分离出来;同时,能 ... -
AOP_使用CGLIB实现AOP功能
2011-07-22 00:02 784好处:不需要目标对象实现接口 使用的架包:cglib-nod ... -
AOP__使用JDK中的Proxy技术实现AOP功能
2011-07-21 22:28 540AOP主要用于权限的验证 细粒度的权限控制:对方法进行拦截, ... -
DI依赖注入_自动装配_autowire
2011-07-20 21:27 695自动装入:容器自动装 ... -
DI依赖注入_手动装配_注解基础
2011-07-20 22:50 1306以下的注释不管在那种配置组件的方法中都能用,这里只是实际需要才 ... -
spring中的方法
2011-07-18 08:03 01、实例化spring容器 ApplicationConte ... -
spring基本概念
2011-07-17 21:38 575Ioc(控制反转):应用本 ...
相关推荐
在Spring框架中,依赖注入(Dependency Injection,DI)是一种设计模式,用于实现控制反转(Inversion of Control,IoC),降低组件之间的耦合度,使得各个组件的职责更加清晰。在Spring的面试中,面试官常会问到...
在Java世界中,Spring框架是应用最广泛的轻量级企业级开发框架,它的一大核心特性就是Inversion of Control(控制反转,简称IOC)和Dependency Injection(依赖注入,简称DI)。这两者是紧密相关的概念,有助于简化...
Spring依赖注入(Dependency Injection,简称DI)是Java应用开发中常用的设计模式,它极大地提高了代码的可测试性和可维护性。在Spring框架中,依赖注入是核心特性之一,通过控制反转(Inversion of Control,IoC)...
Spring框架的Dependency Injection(DI,依赖注入)是其核心特性之一,它允许开发者在运行时通过容器来管理对象及其依赖关系,而不是硬编码这些依赖。这样可以提高代码的可测试性和可维护性,降低了组件之间的耦合度...
它强调的是依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented Programming, AOP),这使得开发者能够更加关注业务逻辑,而非基础设施代码。 二、集合自动装配的概念 集合自动装配是指Spring...
在传统的程序设计中,我们通常手动创建对象并管理它们之间的依赖关系,而在Spring中,这些任务由IOC容器来处理,实现了从依赖管理到依赖注入的转变。 控制反转(IOC)意味着应用程序不再直接创建对象,而是将对象的...
依赖注入(Dependency Injection,简称DI)是Spring框架的核心特性,它允许我们解耦应用程序的组件,使得代码更加灵活,易于测试和维护。依赖注入的概念主要分为两个方面:控制反转(Inversion of Control,简称IOC...
`@Autowired`注解是Spring框架提供的一种依赖注入(Dependency Injection,DI)机制,用于自动装配Bean。它可以根据类型或名称来查找并注入所需的依赖。默认情况下,Spring会根据Bean的类型来匹配,如果存在多个相同...
自动装配和方法注入是Spring实现依赖注入(Dependency Injection,DI)的两种主要方式。 首先,让我们理解什么是依赖注入。在面向对象编程中,对象通常会依赖于其他对象来完成其功能。传统的做法是通过构造函数或...
在IT行业中,Spring框架是Java开发中的一个基石,尤其在控制反转(IoC)和依赖注入(DI)方面。依赖注入是一种设计模式,它允许我们解耦组件,提高代码的可测试性和可维护性。Spring框架通过IoC容器来实现DI,让我们...
首先,`@Autowired`是Spring框架提供的一种依赖注入(DI,Dependency Injection)方式,用于自动装配bean的依赖。当我们在类的属性或方法上使用这个注解时,Spring会自动寻找匹配类型的bean并将其注入。这种方式比传统...
Spring框架是Java开发中广泛应用的一个轻量级容器,它的核心特性之一就是依赖注入(Dependency Injection,简称DI),而Spring的自动装配(Auto-Wiring)则是DI的一种实现方式。本篇文章将深入探讨Spring自动装配的...
在Spring框架中,注解是实现Inversion of Control(IoC)或依赖注入(DI)的一种强大工具。Spring 2.5引入了@Autowired注解,它极大地简化了配置,允许开发者在不编写XML配置文件的情况下完成bean的自动装配。本文将...
Spring框架是Java开发中的一个核心工具,它通过提供依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等功能,极大地简化了企业级应用的开发工作。注解配置是Spring 2.5引入...
在Spring Boot框架中,依赖注入(Dependency Injection,简称DI)是一种关键的设计模式,它使得对象之间的依赖关系得以解耦,从而提高代码的可测试性和可维护性。Spring Boot通过注解简化了这一过程,让我们无需繁琐...
Spring框架是Java开发中不可或缺的一部分,它以其强大的依赖注入(Dependency Injection,简称DI)特性而闻名,其中自动装配(Auto-Wiring)是DI的一种实现方式。自动装配允许开发者减少手动配置bean之间的依赖关系...
Spring框架是Java开发中不可或缺的一部分,它以IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)为核心,极大地简化了应用程序的复杂性。在本教程中,我们将深入探讨如何通过XML配置在...
标题中的“Spring之DI简介”指的是Spring框架中的依赖注入(Dependency Injection,简称DI)特性,这是一个关键的概念,用于实现对象之间的松耦合。在Spring框架中,DI是通过控制反转(Inversion of Control,IoC)...
**Spring框架** 是一个全面的企业级应用开发框架,包括依赖注入(DI)、面向切面编程(AOP)和许多其他功能。Spring的注解驱动能力极大地简化了配置。例如,`@Autowired`注解用于自动装配bean,`@Service`和`@...
在Spring框架中,自动装配(Auto Wiring)是一种简化依赖注入(Dependency Injection,简称DI)的方式,它可以帮助开发者减少显式配置Bean之间的依赖关系。本文将详细介绍Spring中的自动装配方式,帮助您更好地理解...