Spring 공식문서에 의하면,
In Spring, the objects that form the backbone of your application and that are managed by the Spring IoC (Inversion of Control) container are called beans. A bean is an object that is instantiated, assembled, and otherwise managed by a Spring IoC container.
-> Spring IoC에 의해 관리되며, 애플리케이션의 중추를 이루는 객체 
📍 Spring IoC (Inversion of Control)?
A process in which an object defines its dependencies without creating them
-> 어떤 객체가 의존성을 직접 생성하지 않고도 정의할 수 있는 과정
Bean을 등록할 때는 싱글톤 (유일하게 하나만 등록해서 공유함)
-> 같은 Bean이면 모두 같은 인스턴스
@SpringBootApplication
public class BasicBeansApplication {
	public static void main(String[] args) {
    	SpringApplication.run(BasicBeansApplication.class, args);
        
        // 생성되는 모든 Bean들을 보고 싶다면 아래처럼
        // ApplicationContext apc = SpringApplication.run(BasicBeansApplication.class, args);
        // for (String s : apc.getBeanDefinitionNames()) {
        // 	 System.out.pringln(s);
        // }
    }
}결과 화면은 아래와 같다.

@Component
public class Customer {
	private String name;
    private Address address;
    
    public Customer(String name, Address, address) {
    	this.name = name;
        this.address = address;
    }
    
    // getter, setter 생략
}@SpringBootApplication
public class BasicBeansApplication {
	public static void main(String[] args) {
    	SpringApplication.run(BasicBeansApplication.class, args);
    }
}
// 이렇게 Bean으로 등록을 해놓으면, 원할 때에 String이 초기화됨
@Bean
public String getName() {
	return "Jeanine";
}📍 아래와 같이 @Service, @Repository 없이 직접 Bean 등록을 할 수 있다.
(Config 파일은 @SpringBootApplication이 정의되어 있는 파일과 같은 위치에 생성)
@Configuration
public class SpringConfig {
	
    @Bean
    public MemberService memberService() {
    	return new MemberService(memberRepository());
    }
    
    @Bean
    public MemberRepository memberRepository() {
    	return new MemoryMemberRepository();
    }
}@Component(value="addressbean")
public class Address {
}
@Component
public class Customer {
	private String name;
    
    @Qualifier("addressbean")
    @Autowired
    private Address address;
    
    // 아래는 생략
}Spring에서 Bean이란 Spring 컨테이너에 의해 관리되는 클래스의 인스턴스
참고: