假设,有一个客户A:CustomerA.java
public class CustomerA { private Integer id; // 编号 private String name;// 名称 private Set<Tel> telSet; // 电话 private List<City> cityList; // 城市 private Map<Tel, City> telCityMap;// 电话--城市 //省略getter,setter... }
电话类:Tel.java
public class Tel { private String telNum; //省略getter,setter }
城市类:City
public class City { private String cityName; //省略getter,setter }
重点:配置xml文件 Spring.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-3.0.xsd"> <bean id="tel1" class="b.Tel"> <property name="telNum" value="135"></property> </bean> <bean id="tel2" class="b.Tel"> <property name="telNum" value="136"></property> </bean> <bean id="tel3" class="b.Tel"> <property name="telNum" value="137"></property> </bean> <bean id="city1" class="b.City"> <property name="cityName" value="北京"></property> </bean> <bean id="city2" class="b.City"> <property name="cityName" value="上海"></property> </bean> <bean id="city3" class="b.City"> <property name="cityName" value="广州"></property> </bean> <bean id="customerA" class="b.CustomerA"> <!-- 基本类型与及其封装类型都用value属性来配置值 --> <property name="id" value="1"></property> <property name="name" value="candy"></property> <!-- 注入引用类型的集合的值 --> <property name="telSet"> <set> <ref bean="tel1" /> <ref bean="tel2" /> <ref bean="tel3" /> </set> </property> <property name="cityList"> <list> <ref bean="city1" /> <ref bean="city2" /> <ref bean="city3" /> </list> </property> <property name="telCityMap"> <map> <entry key-ref="tel1"> <ref bean="city1" /> </entry> <entry key-ref="tel2"> <ref bean="city2" /> </entry> <entry key-ref="tel3"> <ref bean="city3" /> </entry> </map> </property> </bean> </beans>
单元测试:TestCustomerA.java
public class TestCustomerA { @Test public void testSetValueToCustomerA() { // 1.启动IOC容器 ApplicationContext ac = new ClassPathXmlApplicationContext( "b/spring.xml"); //2.获取bean CustomerA customerA = (CustomerA) ac.getBean("customerA"); System.out.println(customerA.getName()); Set<Tel> telSet = customerA.getTelSet(); for (Tel tel : telSet) { System.out.println(tel.getTelNum()); } List<City> cityList = customerA.getCityList(); for (City city : cityList) { System.out.println(city.getCityName()); } Map<Tel, City> telCityMap = customerA.getTelCityMap(); Set<Entry<Tel, City>> entrySet = telCityMap.entrySet(); for (Entry<Tel, City> entry : entrySet) { System.out.println(entry.getKey().getTelNum() + "----" + entry.getValue().getCityName()); } } }
注意:在学习的时候我把所有的文件都放在了项目的b包中,在实际开发中不建议这么做,应该按照约定俗成的包命名规则来搞。所用到Spring IOC/CORE模块的jar包在附件。
相关推荐
综上所述,Spring中的Bean配置是其核心功能,涉及XML、注解和Java配置等多种方式,以及Bean的生命周期管理、依赖注入和AOP等概念。理解并熟练掌握这些知识点对于开发高效、灵活的Spring应用至关重要。
这种方式需要Bean有对应的setter方法,以便Spring进行依赖注入。 ```xml <bean id="student" class="test.Student"> 张三"/> </bean> <bean id="teacher" class="test.Teacher"> 李四"/> </bean> ``` 2....
Spring支持通过属性值、构造器参数、setter方法等多种方式进行注入。 6. **运行环境与构建工具**: 题目描述中提到的运行环境是Eclipse,这是一个流行的Java集成开发环境,提供了便捷的代码编辑、调试等功能。而...
最后,Bean之间的依赖关系可以通过XML中的`ref`属性,Java配置中的`@Autowired`,或注解配置中的构造函数、setter方法、字段注入等方式来解决。Spring提供了基于类型、名称等多种方式进行依赖解析。 综上所述,...
本文将详细介绍 Java 中的依赖注入(Dependency Injection,简称 DI),特别是 setter 注入和构造器注入两种方式的使用和实现。 一、DI 依赖注入 依赖注入是指在容器中建立 Bean 与 Bean 之间的依赖关系的过程。...
这里,`userService` Bean的`userDao`属性将被`userDao` Bean注入。 接下来是构造器注入。这种方式是在创建对象时就提供其依赖,通过传递构造函数参数来完成。这种方式强制你在创建对象时就明确其依赖,有助于代码...
在Spring框架中,依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)是两大核心特性,同时自动注入Bean也是Spring管理对象的一种常见方式。让我们深入探讨这些概念。 首先,...
setter注入是Spring中最常用的注入方式之一。通过在类中定义setter方法,Spring容器可以在创建对象后,通过这些setter方法设置对象的属性值。以下是一个简单的例子: ```java public class User { private String ...
在Spring框架中,Bean的属性注入是核心功能之一,它允许我们为Bean对象设置各种属性值,以便在应用运行时创建和配置完全初始化的对象。在本篇内容中,我们将深入探讨Spring如何处理Bean的属性注入,包括对象属性的...
4. **Spring 的Bean 定义**:在Spring 配置文件中,我们可以为Struts 2 的Action 定义bean,包括其属性、依赖关系以及生命周期方法。这使得Action 的配置更加集中,易于管理和扩展。 5. **Action 实例的生命周期**...
- **原始值**: 如字符串、整型等简单类型的值可以直接配置到Bean中。 - **对其他Bean的引用**: Bean可以引用另一个Bean作为其属性。 - **集合类型**: 支持集合类型的配置,如List、Set、Map等。 - **内部Bean**:...
在bean初始化时,`BeanFactory`会根据`BeanDefinition`中的依赖关系,自动将其他bean注入到当前bean的属性中。这种过程称为属性设置,可以通过setter方法、构造函数或者字段注入实现。源码中的`...
Spring通过两种方式实现依赖注入:设值注入(Setter Injection)和构造器注入(Constructor Injection)。在解析BeanDefinition时,Spring会根据属性值和构造参数解析依赖,并在实例化Bean后进行注入。 5. **Bean...
4. **DI(Dependency Injection,依赖注入)**:这是 IoC 的具体实现方式,Spring 通过构造函数、setter 方法或者 field 注解来注入 Bean 的依赖。 5. **数据访问集成**:Spring 支持多种数据库访问技术,包括 JDBC...
4. **依赖注入**: 在实例化Bean的同时,Spring会根据Bean定义中的依赖关系,自动将所需的其他Bean注入到当前Bean中。依赖注入可以通过属性注入(setter方法)、构造器注入或者方法注入实现。 5. **生命周期管理**: ...
Spring还提供了一种自动装配Bean的方式,即根据类型或名称自动查找并注入依赖。这可以通过`autowire`属性实现: - `byType`:基于依赖类型自动装配。 - `byName`:基于依赖的属性名自动装配。 ### 7. Profile ...
在5.2.6.RELEASE版本中,DI的实现更加灵活和强大,支持构造器注入、setter注入以及基于注解的注入方式。 3. **面向切面编程(Aspect-Oriented Programming, AOP)** AOP是Spring的重要特性,允许开发者定义“切面...
在setter注入中,Spring通过调用bean对象的setter方法来设置其依赖的属性值。以下是一个简单的步骤来展示setter注入的工作流程: 1. **定义Bean**: 创建一个类,这个类代表一个Bean,它可能包含需要注入的依赖。...
`spring-context`提供了上下文支持,包括bean的生命周期管理和依赖注入;`spring-beans`处理bean的定义和实例化;`spring-aop`则实现了面向切面编程,允许我们在不修改代码的情况下添加额外的行为。 其次,`spring-...