Spring 配置文件中的依赖注入
一、依赖注入 对象引用注入:
1.set方法注入
Service类定义BaseDao对象(属性),设置set方法,并在配置文件中配置注入 name为对象bean(类名) ref为容器中已有的bean的id, 在获得Service的bean对象时,容器为其属性BaseDao赋值
业务层次需要有set方法
package com.z.service.Impl;
import com.z.dao.BaseDao;
import com.z.service.UserService;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class UserServiceImpl implements UserService {
private BaseDao baseDao;public void setBaseDao(BaseDao baseDao) {
this.baseDao = baseDao;
System.out.println("注入");
}
//通过set方法,依赖注入
@Override
public void say() {
this.baseDao.say();
}
xml配置
2Service类定义BaseDao对象(属性),设置set方法,并在配置文件中配置注入 name需要set方法名set后一致,的首字母大小写都可以, ref为容器中已有的bean的id
<bean id="BaseDao" class="com.z.dao.BasoDaoImpl" ></bean>
<bean id="Service" class="com.z.service.Impl.UserServiceImpl" >
<property name="BaseDao" ref="BaseDao"></property>
</bean>
3 通过p标签简写
<bean id="BaseDao" class="com.z.dao.BasoDaoImpl" ></bean>
<bean id="Service" class="com.z.service.Impl.UserServiceImpl" p:baseDao-ref="BaseDao"></bean></code>
输入结果:
无参构造
注入
hello spring!
2.构造方法注入
业务层次需要有构造方法,有参注入BaseDao,以及无参构造方法
private BaseDao baseDao;
public UserServiceImpl(BaseDao baseDao) {
this.baseDao=baseDao;
}
xml配置
<bean id="BaseDao" class="com.z.dao.BasoDaoImpl" ></bean>
<bean id="Service" class="com.z.service.Impl.UserServiceImpl">
<constructor-arg name="baseDao" ref="BaseDao"></constructor-arg>
</bean>
其中name为构造方法在容器中的名称(随意),ref为ref为容器中已有的bean的id
二、依赖注入 普通类型注入:
public class UserServiceImpl implements UserService {
private String sname;
public void setSname(String sname) {
this.sname = sname;
System.out.println("注入");
}
@Override
public void say() {
System.out.println(this.sname+sname);
}
}
xml配置
<bean id="Service" class="com.z.service.Impl.UserServiceImpl">
<property name="sname" value="123"/>
</bean>
其中name需要set方法名set后一致,的首字母大小写都可以。
三、依赖注入 集合数据注入:
package com.z.service.Impl;
import com.z.pojo.User;
import com.z.service.UserService;
import java.util.List;
import java.util.Map;
import java.util.Properties;
public class UserServiceImpl implements UserService {
private List<String> stringList;
private Map<String, User> userMap;
private Properties properties;
public void setStringList(List<String> stringList) {
this.stringList = stringList;
}
public void setUserMap(Map<String, User> userMap) {
this.userMap = userMap;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
@Override
public void say() {
System.out.println(stringList);
System.out.println(userMap);
System.out.println(properties);
}
}
xml配置
<bean id="Service" class="com.z.service.Impl.UserServiceImpl">
<property name="stringList" >
<list>
<value>a</value>
<value>b</value>
<value>c</value>
</list>
</property>
<property name="userMap">
<map>
<entry key="u1" value-ref="user1"/>
<entry key="u2" value-ref="user2"/>
</map>
</property>
<property name="properties" >
<props>
<prop key="p1"> p1value</prop>
<prop key="p2"> p2value</prop>
<prop key="p3"> p3value</prop>
</props>
</property>
</bean>
<bean id="user1" class="com.z.pojo.User">
<property name="Name" value="zhanghao"/>
<property name="Password" value="mima"/>
</bean>
<bean id="user2" class="com.z.pojo.User">
<property name="Name" value="zhanghao"/>
<property name="Password" value="mima"/>
</bean>
配置文件引入
xml配置
<import resource="applicationcontext_user.xml"></import>

· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术