您的当前位置:首页正文

Spring 创建对象的方式

2024-11-25 来源:个人技术集锦

创建对象的方式

无参方式创建对象

实现类:

public class ReadDaoImpl implements ReadDao {
    private String str = "我是杂志";
    public ReadDaoImpl(){
    }
    public ReadDaoImpl(String str){
        this.str=str;
    }
    @Override
    public void getString() {
        System.out.println(str);
    }
}

set方式实现

如果我们去掉实现类的无参构造方法,会报错。因此默认是无参构造的方式创建对象。

bean文件

    <bean id="readDao" class="com.spring.daoimpl.ReadDaoImpl">
    </bean>
    <bean id="readService" class="com.spring.serviceimpl.ReadServiceImpl">
        <property name="readDao" ref="readDao"></property>
    </bean>

有参方式创建对象

  • 根据下标赋值
<bean id="readDao" class="com.spring.daoimpl.ReadDaoImpl">
    <constructor-arg index="0" value="杂志"></constructor-arg>
</bean>

<bean id="readService" class="com.spring.serviceimpl.ReadServiceImpl">
    <property name="readDao" ref="readDao"></property>
</bean>
  • 根据类型注入(不推荐)
<bean id="readDao" class="com.spring.daoimpl.ReadDaoImpl">
    <constructor-arg type="int" value="1"></constructor-arg>
    <constructor-arg type="java.lang.String" value="杂志1"></constructor-arg>
    <constructor-arg type="java.lang.String" value="杂志"></constructor-arg>
</bean>

根据类型注入需要注意当类型一致时根据顺序依次注入因此不推荐使用

  • 根据名称注入
<bean id="readDao" class="com.spring.daoimpl.ReadDaoImpl">
    <constructor-arg name="a" value="1"></constructor-arg>
    <constructor-arg name="str" value="杂志1"></constructor-arg>
    <constructor-arg name="str1" value="杂志"></constructor-arg>
</bean>

Spring配置

别名

<alias name="userService" alias="userServiceNew"></alias>

顾名思义

UserService userService = (UserService) context.getBean("userService");
UserService userServiceNew = (UserService) context.getBean("userServiceNew");

上边代码获取的是同一个对象。

bean配置

<bean id="userService" class="com.spring.serviceimpl.UserServiceImpl" name="s1 s2,s3;s4">
    <property name="userDao1" ref="userDaoZs"></property>
    <property name="userDao" ref="userDaoLs"></property>
</bean>

bean标签

  • id指的是注入的对象名称(唯一标识符通过该名称获取bean)
  • class指的是注入的对象的类型
  • name指的是别名也就是说此时通过userService,s1,s2,s3,s4获取的对象一致。

property标签

  • name是决定UserService类中的那个参数
  • ref bean配置文件中的bean名称,主要是Spring已经创建的对象进行注入
  • value注入的类型,新建对象进行创建

import

导入,当我们联合开发通过导入将文件内容合并

<import resource="beans.xml"></import>

DI依赖注入(Dependency Injection)

显示全文