spring什么时候setter注入

worktile 其他 46

回复

共3条回复 我来回复
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    Spring的setter注入是在对象实例化后、属性值传递给对象之前进行的。具体来说,setter注入是指在Spring容器实例化Bean对象后,通过调用Bean的setter方法将所需的属性值注入进去。

    在Spring中,有多种方式可以进行setter注入,包括XML配置、注解配置和Java配置。

    1. XML配置:通过在XML配置文件中使用元素来配置Bean对象及其属性,并使用元素为属性设置数值或引用其他Bean。

    示例:

    <bean id="myBean" class="com.example.MyBean">
        <property name="propertyName" value="propertyValue" />
    </bean>
    
    1. 注解配置:在Bean类中使用注解来标注需要进行setter注入的属性,并在配置类中通过进行扫描扫描包等方式将Bean对象注入到Spring容器中。

    示例:

    @Component
    public class MyBean {
        @Autowired
        private OtherBean otherBean;
        // ...
    }
    
    @Configuration
    @ComponentScan(basePackages = "com.example")
    public class AppConfig {
        // ...
    }
    
    1. Java配置:通过编写配置类来配置Bean对象及其属性,并使用@Bean注解标识方法返回的对象为Bean对象。

    示例:

    @Configuration
    public class AppConfig {
        @Bean
        public MyBean myBean() {
            MyBean myBean = new MyBean();
            myBean.setOtherBean(otherBean());
            // ...
            return myBean;
        }
        
        @Bean
        public OtherBean otherBean() {
            // ...
            return new OtherBean();
        }
    }
    

    无论是哪种方式,Spring容器都会在对象实例化后,通过反射调用Bean的setter方法将属性值传递给对象。所以可以说,Spring的setter注入是在对象实例化后进行的。

    1年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在Spring中,Setter注入是一种基于属性的依赖注入方式,用于将依赖的对象通过Setter方法注入到目标对象中。Spring中的Setter注入可以分为两种情况。

    1. 配置文件中使用Setter注入:在Spring的配置文件中,可以通过标签的子标签的name属性指定目标对象的属性名称,value属性指定注入的值,ref属性指定注入的对象。例如:
    <bean id="person" class="com.example.Person">
        <property name="name" value="John" />
        <property name="age" value="25" />
        <property name="address" ref="address" />
    </bean>
    <bean id="address" class="com.example.Address">
        <property name="city" value="New York" />
        <property name="country" value="USA" />
    </bean>
    

    在上述例子中,Person类中的name和age属性通过Setter方法注入值,address属性通过Setter方法注入Address对象。

    1. 注解中使用Setter注入:除了在配置文件中进行Setter注入外,还可以使用注解的方式进行Setter注入。通过在目标对象的Setter方法上标注@Autowired注解,Spring会自动在容器中查找匹配的对象并注入。例如:
    @Component
    public class Person {
        private String name;
        private int age;
        private Address address;
        
        @Autowired
        public void setAddress(Address address) {
            this.address = address;
        }
    
        // 省略其他Setter和Getter方法
    }
    
    @Component
    public class Address {
        private String city;
        private String country;
    
        // 省略Setter和Getter方法
    }
    

    在上述例子中,Person类中的setAddress方法被@Autowired注解标注,Spring会自动在容器中查找匹配的Address对象并注入。

    需要注意的是,无论是使用配置文件还是注解,Spring的Setter注入都是在实例化目标对象后进行的。因此,Setter注入发生的时间取决于创建目标对象的方式,可以是在容器启动时创建,也可以是在运行时动态创建。

    1年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    Spring框架中的Bean的注入方式有三种:构造函数注入、setter方法注入和字段注入。在使用Spring进行Bean的注入时,可以根据实际情况选择合适的注入方式。

    Setter注入是一种常用的注入方式,在Spring框架中,它通常在Bean的配置文件中使用。Setter注入是通过调用Bean的setter方法,将依赖的对象注入到Bean中。

    以下是Spring框架中使用Setter注入的一般步骤:

    1. 创建一个Java类作为Bean,该类需要提供相应的setter方法用于注入依赖。
    public class UserService {
        private UserDao userDao;
        
        public void setUserDao(UserDao userDao) {
            this.userDao = userDao;
        }
        
        //其他方法
    }
    
    1. 在Spring的配置文件中配置Bean的定义和依赖注入。通过bean标签定义Bean,并使用property子标签配置注入的依赖。
    <bean id="userService" class="com.example.UserService">
        <property name="userDao" ref="userDao"/>
    </bean>
    
    <bean id="userDao" class="com.example.UserDao"/>
    
    1. 通过Spring的容器获取Bean对象和调用相关方法。
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    UserService userService = context.getBean("userService", UserService.class);
    userService.doSomething();
    

    其中,第2步的property标签中,name属性指定了待注入的属性名,ref属性指定了依赖的Bean的id。Spring会自动按照name属性所指定的setter方法,将对应的Bean注入到UserService的实例中。

    需要注意的是,setter注入需要提供相应的setter方法,并且在配置文件中定义Bean的时候,也要确保Bean的setter方法存在。

    Setter注入便于后续对Bean进行修改和扩展,同时也提高了Bean的可读性和可维护性。但是,Setter注入也存在一些问题,例如,如果有大量的依赖需要注入,在配置文件中编写繁琐,可读性降低。

    1年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部