新建一个maven项目并添加spring-context 依赖
<!--https://mvnrepository.com/artifact/org.springframework/spring-context-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
使用注解往IOC中注入一个实例
实体bean:
package com.cjian.bean;
/**
* @description:
* @author: CJ
* @time: 2020/10/28 9:29
*/
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" + "name='" + name + '\'' + ", age=" + age + '}';
}
public Person() {
}
}
编写一个配置类:
package com.cjian.config;
import com.cjian.bean.Person;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @description:
* @author: CJ
* @time: 2020/10/28 9:32
*/
@Configuration //告诉spring这是一个配置类
public class MainConfig {
/*
* prototype :多实例,IOC容器启动并不会去调用方法创建对象,而是每次获取对象的时候才会调用方法创建
* singleton: 单实例(默认值),ioc容器启动的时候就会调用方法创建对象方法哦ioc容器中
* request:同一个请求创建一个实例
* session:同一个session创建一个实例
*@Lazy :懒加载,正对单实例,容器启动的时候不创建对象,第一次使用bean的时候才创建对象并初始化
* */
@Scope("prototype")
//给容器中注册一个bean,类型未返回值的名字,id默认为方法名
@Bean
public Person person01(){
return new Person("cjian", 27);
}
}
编写测试类,验证功能:
package com.cjian;
import com.cjian.bean.Person;
import com.cjian.config.MainConfig;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
/**
* @description:
* @author: CJ
* @time: 2020/10/28 9:44
*/
public class Test {
public static void main(String[] args) {
AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(
MainConfig.class);
Person bean = annotationConfigApplicationContext.getBean(Person.class);
//根据class获取实例
annotationConfigApplicationContext.getBeanNamesForType(Person.class);
System.out.println(bean);
//查看ioc容器中有哪些实体类型
String[] beanDefinitionNames = annotationConfigApplicationContext.getBeanDefinitionNames();
for (String name : beanDefinitionNames) {
System.out.println(name);
}
}
}
输出:
修改person的id:
如果@Bean指定了value属性,则以该值作为id
输出为: