5.依赖注入Bean属性方式讲解

一、手动装配,使用XML配置

    1.构造方法注入

实体类:Stuent

public class Student {
	private String username;
	private String password;
	private int age;
	public Student() {}
	public Student(String username, String password, int age) {
		this.username = username;
		this.password = password;
		this.age = age;
	}
	public Student(String username,String password) {
		this.username = username;
		this.password = password;
	}
	
	public Student(String username,int age) {
		this.username = username;
		this.age = age;
	}
	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;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "Student [username=" + username + ", password=" + password + ", age=" + age + "]";
	}
}

applicationContext.xml   构造方法注入方式

   类似于调用了 public  Student(String username.string password);构造函数

<beans>

<!--第一种为属性值进行赋值-->
<bean id="stu1" class="com.lq.pojo.Student">
   <constructor-arg name="username" value="zhangsan"></constructor-arg>
   <constructor-arg name="password" value="123456"></constructor-arg>
</bean>
<!--第二种为索引值进行赋值-->
<bean id="stu2" class="com.lq.pojo.Student">
    <constructor-age index="0" value="lq" type="java.lang.String">
    <constructor-age index="1" value="5" type="int">
</bean>

</beans>

注意:这里有一点很重要,如果你类中age类型是int 那么在xml type中写int 如果你使用的是包装类Integer的话 就写java.lang.Integer

 

2.属性setter属性方法注入 (前提是实体类中有get/set)

<!-- 通过setter属性方法注入 -->
   <bean id="stu" class="com.lq.pojo.Student">
     <property name="username" value="lq"></property>
     <property name="password" value="123456"></property>
     <property name="age" value="18"></property>
   </bean>

 

      2.1通过p命名空间进行属性setter方法注入 首先导入约束 红色箭头的那个

<!-- 通过p命名空间进行setter属性注入 -->
   <bean id="stu2" class="com.lq.pojo.Student" p:username="lq" p:password="123" p:age="19"></bean>

3.SpEL表达式(Spring表达式)

   <!-- 
     SpEl表达式:Spring表达式
     <property name="" value="#{表达式}">
       #{123}、#{'jack'}       ---数字、字符串
       #{beanId}              ---另一个bean引用
       #{beanId.propName}     ---操作数据
       #{beanId.toString()}   ---执行方法
       #{T(类).字段{方法}        ---静态方法或字段
    --> 

  这个时候 我们加了一个字符串变大写的方法 惊奇的发现 竟然成大写了。这就是SqEl表达式好处 能够调用方法

还可以使用SpEL调用类方法(这里我们调用Math下的一个PI)

一个对象引用另一个对象(有两种方法)

      1.使用ref                   <property name="address" ref="address"></property>

      2.使用SpEL表达式  <property name="address" ref="#{address}"></property>

  引用对象还可以使用SpEL表达式 效果一致

 

3.集合注入

 集合的注入都是给<property>添加子标签

  •  数组:<array>   
  • List:<list>   
  • Set:<set>   
  • Map:<map> map存放k/v键值对 使用<entry>描述
  • Properties: <props>  <prop key=""></prop>

普通数据: <value>    引用数据:<ref>

  3.1 使用List集合

  

   将其改成set集合后(我们发现利用了set集合的特性 过滤掉了重复的数据)

将其改成map集合后(键值对数据)

 

将其改成Properties后

 

4.接口注入(这种注入方式在整合MyBaits时候用的非常多)

   

xml

 

讲到这里 基本就完结了。还有个<array>的 其实它跟集合那个xml写法是一样的 就是把标签改一下而已。

 注入的方式有:

  • 属性(setter)方法注入 
  • 构造器注入
  • 接口注入
  • 静态工厂方法注入
  • 实体工厂方法注入
  • 注解实现注入(整合后期经常使用)

   可能大家有些刚学Spring的不知道这些注入以后有什么用,只觉得更加复杂了,或者 压根没实际作用,其实到了后面SSM整合项目的时候,你会发现 这些用的非常多的,没有一个是用不到的,都会用到,要记住一句话,研究出来的技术总有用处和它的好处,不然别人研究出来干嘛呢,一些没用的东西,他们会去废除,弃用,但是如果一些技术没有被弃用 说明它的用处还是很大的,我们首先要掌握它的基本用法,并且经常去练习,现在迷茫,等到你项目以后用到的时候,你就会恍然大悟了 ,原来这个东西作用是这样的。

  下一篇将讲解自动注入,注解的方式:注解注入

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot 是一个基于 Spring 框架的快速开发应用程序的工具,其中依赖注入(DI)是 Spring 框架的核心特性之一。下面是 Spring Boot 的依赖注入过程: 1. 创建一个 BeanFactory 对象 BeanFactory 是 Spring 中管理Bean的核心接口之一。当启动应用程序时,Spring 会创建一个 BeanFactory 对象,用来存储应用程序中所有的 Bean。 2. 扫描应用程序中的所有类 Spring Boot 会扫描应用程序中所有的类,并检查它们是否使用了 @Component、@Service、@Repository 或 @Controller 等注解。如果某个类使用了这些注解,则说明它是一个 Bean,需要被 Spring 管理。 3. 创建 Bean 对象 当检测到某个类是 Bean 时,Spring 会创建一个 Bean 对象,并使用该对象的默认构造函数来实例化它。 4. 注入依赖 在创建 Bean 对象时,Spring 会检查该对象的构造函数、Setter 方法和成员变量,以确定需要注入哪些依赖。如果依赖已经存在于 BeanFactory 中,则直接注入;如果依赖还没有被创建,则先创建依赖对象,再进行注入。 5. 完成依赖注入 当所有的依赖都被注入完成后,Spring 将返回一个完全初始化的 Bean 对象。此时,该对象已经可以在应用程序中使用了。 6. 生命周期管理 Spring 还提供了一些接口,用于在 Bean 的生命周期中执行一些操作,例如初始化和销毁。在 Bean 创建完成后,Spring 会调用 InitializingBean 接口中的 afterPropertiesSet() 方法来执行初始化操作。在应用程序关闭时,Spring 会调用 DisposableBean 接口中的 destroy() 方法来执行销毁操作。 以上就是 Spring Boot 的依赖注入过程。通过该过程,Spring Boot 可以将各个组件之间的依赖关系自动管理起来,从而简化了应用程序的开发和维护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值