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>
![ 目录结构.png](https://img2022.cnblogs.com/blog/2911328/202207/2911328-20220704214014524-538871621.png)
posted @   1906zz  阅读(136)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示