注:自动装配(按类型和名称)基于反射设计创建对象并暴力反射对应属性为私有属性初始化数据,因此无需提供setter方法。自动装配建议使用无参构造方法创建对象,如果不提供对应的构造方法,应提供唯一的构造方法
package domain;
import org.springframework.stereotype.Component;
@Component
public class Animal {
private String name;
private Integer age;
}
package domain;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class People {
@Autowired
private Animal animal;
}
package config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("domain")
public class SpringConfig {
}
import config.SpringConfig;
import domain.People;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Demo {
public static void main(String[] args) {
ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
People people = ctx.getBean(People.class);
System.out.println(people);
}
}
注:@Qualifier注解无法单独使用,必须配合@Autowired注解使用
package domain;
import org.springframework.stereotype.Component;
@Component("animal")
public class Animal {
private String name;
private Integer age;
}
package domain;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class People {
@Autowired
@Qualifier("animal")
private Animal animal;
}
package config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("domain")
public class SpringConfig {
}
import config.SpringConfig;
import domain.People;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Demo {
public static void main(String[] args) {
ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
People people = ctx.getBean(People.class);
System.out.println(people);
}
}
package domain;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class Animal {
@Value("maomi")
private String name;
@Value("123")
private Integer age;
}