1.使用@Autowired注解按类型自动装配引用数据类型
注:自动装配(按类型和名称)基于反射设计创建对象并暴力反射对应属性为私有属性初始化数据,因此无需提供setter方法。自动装配建议使用无参构造方法创建对象,如果不提供对应的构造方法,应提供唯一的构造方法
java
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);
}
}
2.使用@Autowired和@Qualifier注解按名称自动装配引用数据类型(不推荐使用)
注:@Qualifier注解无法单独使用,必须配合@Autowired注解使用
java
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);
}
}
3.使用@Value注解实现简单数据类型的注入
java
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;
}