1,xml+基于注解配置(第一步:在xml开启注解配置)
@Component 被表示类会被纳入 spring ioc 容器进行管理,相当于
@Value 为类注入基本类型和String属性值
@Autowired 为类注入应用类型属性值;默认按类型注入,可以通过@Qualifier("dog2")指定bean,同时也可以通过bean加入primary=true 优先被Autowired注入
@Resource 默认按类型注入,如果指定了name属性,则按bean名称注入
例:
添加配置文件beans-annotation.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
添加Dog类
@Component
public class Dog {
@Value("旺财")
private String name;
@Value("公")
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "entity.Dog [name=" + name + ", sex=" + sex + "]";
}
}
添加测试类
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("beans-annotation.xml");
Dog dog = (Dog) context.getBean("dog");
System.out.println(dog.toString());
}
2,java+注解配置(主流,第一步:在配置类中开启注解扫描)
@ComponentScan("entity") 会去entity扫描@Component @Value @Autowired进行创建bean或注入属性值
注意:需要再多导入一个包,spring-app-5.0.14.RELEASE.jar
1)AnnotationConfigApplicationContext
@Configuration 指定该类为Spring ioc容器配置类,相当于beans.xml文件
@Bean(name ="user") 将方法返回值纳入到spring ioc容器进行管理,相当于
例如:
添加配置文件beans-annotation.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
添加Dog类
public class Dog {
private String name;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "entity.Dog [name=" + name + ", sex=" + sex + "]";
}
}
添加工厂类
@Configuration
@ComponentScan(basePackages = "entity")
public class BeansConfig {
@Bean
public Dog getDog(){
Dog dog = new Dog();
dog.setSex("男");
dog.setName("王二麻子");
return dog;
}
}
添加测试类
public static void main(String[] args) {
AnnotationConfigApplicationContext configApplicationContext =
new AnnotationConfigApplicationContext(BeansConfig.class);
Object dog = configApplicationContext.getBean("getDog");
System.out.println(dog);
}