美文网首页
Spring中属性注入的方式

Spring中属性注入的方式

作者: onnoA | 来源:发表于2019-01-10 23:12 被阅读0次

什么是属性注入?

属性注入就是在实例化对象时,同时向对象中的属性进行相应的赋值。即,通俗点说,属性注入就是给类中的属性赋值。

在Java中(非Spring、非框架)的属性注入方式:

1.通过set方法注入

public class Student{
  private String name;
  public void setName(String name) {
    this.name = name;
  }
}

  Student student = new Student();
  student.setName("棒冰冰");

2. 通过有参构造方式注入

  public class Student{
      private String name;
      public Student(String name){
        this.name = name;
    }
  }
Student student = new Student("棒棒冰");

3. 通过接口的方式实现

public interface UserDao{
  public void delete(String id);
}

public class UserDaoImpl UserDao{
  private Integer id;
  public void delete (Integer id) {
    this.id = id;
  }
}

Spring中属性注入的方式

1.set方式注入(常用)

pom.xml的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.zh</groupId>
    <artifactId>property-test</artifactId>
    <version>1.0.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.17.RELEASE</version>
        </dependency>
    </dependencies>


</project>

spring-context.xml的配置文件

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

   <!--通过set方法注入-->
    <bean id="user" class="com.zh.propperty.test.User">
        <!--注入对象的属性值-->
        <property name="username" value="小明"></property>
    </bean>
</beans>

User.java

public class User {
    private String username;

    public void setUsername(String username) {
        this.username = username;
    }
    public void getUsername(){
        System.out.println("User---------------"+username);
    }
}

UserTest.java

public class UserTest {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-context.xml");
        User user = (User) context.getBean("user");
        user.getUsername();

    }
}

2. 有参构造的方式注入

pom.xml的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.zh</groupId>
    <artifactId>property-test</artifactId>
    <version>1.0.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.17.RELEASE</version>
        </dependency>
    </dependencies>
</project>

spring-context.xml的配置文件

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

    <!--通过有参构造赋值-->
    <bean id="propertyTest" class="com.zh.propperty.test.PropertyTest">
        <constructor-arg name="name" value="冰冰棒"></constructor-arg>
    </bean>


</beans>

PropertiesTest.java


public class PropertyTest {
    private String name;

    public PropertyTest(String name) {
        this.name = name;
    }

    public void sayHi() {
        System.out.println("PropertyTest----"+name);
    }
}

Test.java测试类

public class Test {
    public static void main(String[] args) {
       ApplicationContext context = new ClassPathXmlApplicationContext("spring-context.xml");
        PropertyTest propertyTest = (PropertyTest) context.getBean("propertyTest");
        propertyTest.sayHi();
    }
}

输出结果: PropertyTest----冰冰棒 ,则说名赋值成功

注入对象类型的属性(重要)

代码如下 :
pom.xml的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.zh</groupId>
    <artifactId>object-injection</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.17.RELEASE</version>
        </dependency>
    </dependencies>
</project>

spring-context.xml的配置文件

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

    <bean id="userDao" class="com.zh.object.injection.UserDao"></bean>

    <bean id="userService" class="com.zh.object.injection.UserService">
        <property name="userDao" ref="userDao"></property>
    </bean>
</beans>

UserDao.java

public class UserDao {
    public void add() {
        System.out.println("UserDao-----add");
    }
}

UserService.java

public class UserService {
    private UserDao userDao;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public void add(){
        System.out.println("UserService-----add");
        userDao.add();
    }
}

UserTest.java测试类

public class UserTest {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-context.xml");
        UserService userService = (UserService) context.getBean("userService");
        userService.add();
    }
}

相关文章

  • Spring 的属性注入

    Spring 的属性注入 Spring 的属性注入,我们可以理解成之前说过的 DI (依赖注入)。 注入方式 对于...

  • Spring的bean的属性注入

    bean的属性注入3中方式。1.0 接口注入。2.0 构造函数注入。3.0 setter方法的注入。 spring...

  • Bean的常用配置---属性注入

    Spring的属性注入 对于类成员变量,注入方式有三种 构造函数注入 属性setter方法注入 接口注入 Spri...

  • Spring中属性注入的方式

    什么是属性注入? 属性注入就是在实例化对象时,同时向对象中的属性进行相应的赋值。即,通俗点说,属性注入就是给类中的...

  • Spring为什么不建议属性注入

    spring的三种注入方式 基于 field 注入(属性注入) 基于 setter 注入 基于 construct...

  • 依赖注入的方式

    依赖注入: 依赖于某些方式给Bean的资源进行注入 Spring 支持三种依赖注入的方式 属性注入 构造器注入 工...

  • 依赖注入

    依赖注入 Spring支持两种依赖注入方式,分别是属性注入和构造函数注入.除此之外,Spring 还支持工厂方法注...

  • SpringBoot-配置文件解析

    由于 Spring Boot 源自 Spring ,所以 Spring 中存在的属性注入,在 Spring Boo...

  • Spring 的三种注入方式

    1. 实例的注入方式 首先来看看 Spring 中的实例该如何注入,总结起来,无非三种: 属性注入 set 方法注...

  • spring面试问题总结(1-20)

    一. 介绍一下Spring IOC (控制反转,依赖注入)? Spring支持三种依赖注入方式,分别是属性(Set...

网友评论

      本文标题:Spring中属性注入的方式

      本文链接:https://www.haomeiwen.com/subject/kirzrqtx.html