1.实体类
User.java
package com.test.model; public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
2.数据访问对象(dao-data access object)
UserDAO.java
package com.test.dao; import com.test.model.User; public interface UserDAO { public void save(User user); }
3.实现dao层类
UserDAOImpl.java
package com.test.dao.impl; import com.test.dao.UserDAO; import com.test.model.User; public class UserDAOImpl implements UserDAO { public void save(User user) { System.out.println("user saved!"); } }
4.服务类
UserService.java
package com.test.service; import com.test.dao.UserDAO; import com.test.model.User; public class UserService { private UserDAO userDAO; // 构造器注入用到 public UserService(UserDAO userDAO) { super(); this.userDAO = userDAO; } //set注入用到 // public UserDAO getUserDAO() { // return userDAO; // } // // public void setUserDAO(UserDAO userDAO) { // this.userDAO = userDAO; // } public void add(User user) { userDAO.save(user); } }
5.配置文件
beans.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="userDAOImpl" class="com.test.dao.impl.UserDAOImpl"></bean> <bean id="userService" class="com.test.service.UserService"> <!-- set注入 --> <!-- <property name="userDAO">--> <!-- <ref bean="userDAOImpl" />--> <!-- </property>--> <!-- 构造器注入(UserService中要有个带UserDAO参数的构造方法) --> <constructor-arg> <ref bean="userDAOImpl"/> </constructor-arg> </bean> </beans>
6.jUnit测试类
UserServiceTest.java
package com.test.service; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.test.model.User; public class UserServiceTest { @Test public void testAdd() throws Exception { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml"); UserService service = (UserService) applicationContext.getBean("userService"); User u = new User(); u.setUsername("zhangsan"); u.setPassword("123"); service.add(u); } }
相关推荐
我们学习了spring框架spring框架里面有3个优势第一个是轻量级的IOC也叫控制反转后来改名为DI也叫依赖注入,依赖注入里面有3中注入方法分别是set注入,构造器注入,注解注入,我传的是set注入的视频
本文将详细介绍 Java 中的依赖注入(Dependency Injection,简称 DI),特别是 setter 注入和构造器注入两种方式的使用和实现。 一、DI 依赖注入 依赖注入是指在容器中建立 Bean 与 Bean 之间的依赖关系的过程。...
在Spring框架中,依赖注入可以通过构造器注入、setter注入和接口注入三种方式进行。本例主要关注setter注入。首先,我们需要在Spring配置文件(如`applicationContext.xml`)中声明bean及其依赖。然后,Spring会...
在Spring中,有两种主要的属性注入方式:setter方法注入和构造器注入。 1. Setter方法注入:这是最常用的方式,通过在类中定义带有`set`前缀的方法,Spring容器会调用这些方法来设置依赖。例如: ```java public ...
在Spring框架中,Bean的属性注入是...在实际开发中,结合`c`名称空间(构造器注入)和`aop`等其他名称空间,我们可以构建出高效、灵活的Spring应用。对于熟悉和掌握Spring框架,理解并熟练运用这些特性是非常重要的。
构造器注入确保了对象在创建时就已经处于完全配置的状态,有利于保持对象的完整性和一致性。 ```java public class Car { private int maxSpeed; private String brand; private double price; // 带参数的...
构造器注入是指通过构造方法来注入依赖对象。在Spring配置文件中,需要使用标签来指定构造器参数,同样通过name或ref属性来注入属性值。需要注意的是,构造器参数的顺序要与构造函数的参数顺序一致。 3. 接口注入...
在Spring框架中,依赖注入有两种主要实现方式:构造器注入和setter注入。 1. 构造器注入:通过在类的构造器中传递依赖对象来初始化实例。这种方式强制所有依赖在对象创建时就已知,有利于确保对象的完整性和一致性...
1. **构造器注入**:通过构造函数传递依赖对象,Spring容器会根据构造函数的参数类型创建并注入相应的对象。这种方式确保对象在创建时就具备所有依赖,增强了对象的完整性和一致性。 2. **setter注入**:通过setter...
1. 在使用构造函数注入时,需要注意构造函数的参数类型和顺序必须与 beans.xml 文件中的 `<constructor-arg>` 元素保持一致。 2. 在 beans.xml 文件中,需要使用 `<constructor-arg>` 元素来指定构造函数的参数值,...
Spring 依赖注入的几种方式 依赖注入(Dependency Injection,...Spring 依赖注入可以通过 Set 注入、构造器注入和注解注入三种方式来实现,它可以将对象之间的耦合关系降到最低,从而提高系统的灵活性和可维护性。
- 构造器注入:通过配置`<constructor-arg/>`元素来注入。 - 接口注入:Spring当前版本不支持此方式。 6. 注入的数据类型包括: - JavaBean类型:通过`<ref/>`元素注入。 - 基本数据类型、包装类型和字符串:...
1. **构造器注入**:通过类的构造函数传入依赖的对象实例。例如,一个类`Service`依赖`Repository`,我们可以在`Service`的构造函数中接收`Repository`的实例: ```java public class Service { private ...
在Spring框架中,DI可以通过三种主要方式实现:接口注入、构造器注入和setter注入。 1. **接口注入**:这是一种非侵入性的注入方式,它不涉及具体的实现类。Spring容器可以通过代理对象实现接口注入,开发者定义...
假设`ExampleClass`有接受字符串参数的构造器: ```xml ``` 5. **Map注入**:当需要注入Map时,可以使用`<map>`元素: ```xml ``` 6. **List与Set注入**:对于List或Set,可以使用`...
Spring框架提供了多种方式来实现这种注入,包括构造器注入、setter方法注入、字段注入等。本篇文章将主要介绍如何通过`PropertyPathFactoryBean`来注入属性值。 #### 三、PropertyPathFactoryBean的使用 `...
属性注入需要在目标类中提供对应的set方法,而构造器注入则需要在bean定义中正确配置constructor-arg标签。 Spring支持自动注入,即Spring容器在创建对象时,可以自动完成依赖关系的注入。自动注入有以下几种方式:...
可以使用反射来获取类的构造函数或字段,然后通过`Class.newInstance()`或`Field.set()`进行操作。 4. 配置管理:设计一个配置管理系统,它可以是简单的Java集合,也可以是一个基于XML或注解的配置,用于存储bean的...
为了简化配置,Spring还提供了p命名空间和c命名空间的配置方式,分别对应set方法注入和构造方法注入。通过引入相应的命名空间,可以直接在XML配置文件中以属性的方式配置属性值和构造器参数。 通过上述知识点,可以...