Spring IOC创建对象的两种方式

 更新时间:2021年03月15日 14:31:55   作者:XIaoyummm  
这篇文章主要给大家介绍了关于Spring IOC创建对象的两种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

IOC创建对象的方式

一、 使用无参构造创建对象(默认方式)

创建实体类

注意:属性必须要有set方法,来完成注入

public class User {
  private String name;

  public User() {
    System.out.println("执行了User类的无参构造方法~");
  }

  public User(String name){
    this.name = name;
    System.out.println("执行了User类的有参构造方法");
  }

  //使用无参构造方法时,必须要设置set方法,因为注入时 需要通过set方法注入
  public void setName(String name) {
    this.name = name;
  }

  @Override
  public String toString() {
    return "User{" +
        "name='" + name + '\'' +
        '}';
  }
}

配置Bean

<?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
    https://www.springframework.org/schema/beans/spring-beans.xsd">

  <bean id="user" class="com.test.pojo.User">
    <property name="name" value="gyp"/>
  </bean>

</beans>

测试类

public class MyTest {
  public static void main(String[] args) {
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    User user = context.getBean("user", User.class);
    System.out.println(user);
  }
}

​ 结果:

二、使用有参构造创建对象

  • 通过下标注入
  • 通过名字注入 【推荐】
  • 通过类型注入

有参构造,不需要set方法注入

通过下标方式注入(通过index来选择,给有参构造的第几个参数注入

(1)配置Bean

	<bean id="user" class="com.test.pojo.User">
    <constructor-arg index="0" value="gyp"/>
  </bean>

(2)测试结果

通过名字注入

(1)配置Bean

  <bean id="user" class="com.test.pojo.User">
    <constructor-arg name="name" value="gyp"/>
  </bean>

(2)测试结果

通过类型注入(不建议使用!因为当类里面有两个相同类型的属性时,无法给属性注入

(1)配置Bean

	<bean id="user" class="com.test.pojo.User">
    <constructor-arg type="java.lang.String" value="gyp"/>
  </bean>

(2)测试结果

总结:在加载配置文件的时候,IOC就已经创建好了对象!

到此这篇关于Spring IOC创建对象的两种方式的文章就介绍到这了,更多相关Spring IOC创建对象内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Spring Security集成手机验证码登录功能实现

    使用Spring Security集成手机验证码登录功能实现

    本文详细介绍了如何利用SpringSecurity来实现手机验证码的注册和登录功能,在登录过程中,同样需通过验证码进行验证,文章还提供了相关的代码实现
    2024-10-10
  • springboot+thymeleaf+layui的实现示例

    springboot+thymeleaf+layui的实现示例

    本文主要介绍了springboot+thymeleaf+layui的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-12-12
  • java中堆和栈的区别分析

    java中堆和栈的区别分析

    这篇文章主要介绍了java中堆和栈的区别,分析了Java中堆和栈的原理及使用时的注意事项,需要的朋友可以参考下
    2014-09-09
  • Java if-else 多重嵌套的优化方式

    Java if-else 多重嵌套的优化方式

    这篇文章主要介绍了Java if-else 多重嵌套的优化方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • shardingsphered 线程安全问题示例分析

    shardingsphered 线程安全问题示例分析

    这篇文章主要为大家介绍了shardingsphered 线程安全问题示例分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Jmail发送邮件工具类分享

    Jmail发送邮件工具类分享

    这篇文章主要为大家分享了Jmail发送邮件工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • java random.nextInt的坑及解决

    java random.nextInt的坑及解决

    这篇文章主要介绍了java random.nextInt的坑及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • SpringBoot中使用@ControllerAdvice注解详解

    SpringBoot中使用@ControllerAdvice注解详解

    这篇文章主要介绍了SpringBoot中使用@ControllerAdvice注解详解,@ControllerAdvice,是Spring3.2提供的新注解,它是一个Controller增强器,可对controller中被 @RequestMapping注解的方法加一些逻辑处理,需要的朋友可以参考下
    2023-10-10
  • 基于Java解决华为机试实现密码截取 

    基于Java解决华为机试实现密码截取 

    这篇文章主要介绍了基于Java解决华为机试实现密码截取,文章围绕主题相关资料展开详细内容,具有一的参考价值,需要的小伙伴可以参考一下,希望对你有所帮助
    2022-02-02
  • EasyExcel工具读取Excel空数据行问题的解决办法

    EasyExcel工具读取Excel空数据行问题的解决办法

    EasyExcel是阿里巴巴开源的一个excel处理框架,以使用简单,节省内存著称,下面这篇文章主要给大家介绍了关于EasyExcel工具读取Excel空数据行问题的解决办法,需要的朋友可以参考下
    2022-08-08

最新评论