Spring利用注解向ioc容器中注入bean的方法有哪些

本文介绍了Spring中向IOC容器注入bean的多种方法,包括使用@Bean注解、包扫描结合@Component系列注解、@Import导入和利用FactoryBean。详细阐述了Spring应用上下文的不同实现,如AnnotationConfigApplicationContext、ClassPathXmlApplicationContext等,并提供了测试类的输出结果,涵盖了Configuration、ImportSelector和ImportBeanDefinitionRegistrar的使用示例。
摘要由CSDN通过智能技术生成

1.@Bean,名称默认为方法名
2.包扫描+组件标注注解(@Controller/@Service/@Repository/@Component)
3.@Import
4.利用Spring提供的FactoryBean

创建项目引入jar包

<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.1.2.RELEASE</version>
    </dependency>

对spring-context的解释
Spring通过应用上下文(Application Context)装载bean的定义并把它们组装起来。Spring应用上下文全权负责对象的创建和组装。Spring自带了多种应用上下文的实现,它们之间主要的区别仅仅在于如何加载配置。
1.AnnotationConfigApplicationContext:从一个或多个基于Java的配置类中加载 Spring应用上下文。
2.AnnotationConfigWebApplicationContext:从一个或多个基于Java的配置类中 加载Spring Web应用上下文。
3.ClassPathXmlApplicationContext:从类路径下的一个或多个XML配置文件中加 载上下文定义,把应用上下文的定义文件作为类资源。
4.FileSystemXmlapplicationcontext:从文件系统下的一个或多个XML配置文件 中加载上下文定义。
5.XmlWebApplicationContext:从Web应用下的一个或多个XML配置文件中加载上下 文定义。


@Bean
@Configuration//配置类=配置文件 告诉spring这个是个配置类
public class Config {
   

    @Bean(name="wangshuangPerson") //给容器注入一个组件,相当于bean.xml中的bean标签,class为返回值类型,id为方法名
    @Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)//默认单例模式:容器创建的时候创建对象。多例模式:调用一次创建一次对象
    @Lazy //bean的加载时机:单例模式:容器创建的时候创建对象。多例模式:调用一次创建一次对象。当@Lazy(true)时不管什么模式都调用的时候才加载,单例模式和多例模式的区别是单例模式只创建一次对象,多例模式调用几次创建几个对象    
    public Person getPerson() {
   
    	System.out.println("创建Person");
        return new Person("wangshaung", "10");
    }
}

测试类

public class AnnotationTest {
   
    public static void main(String[] args) {
   
    	//创建容器
    	AnnotationConfigApplicationContext acac=new AnnotationConfigApplicationContext(Config.class);
    	//返回此工厂中定义的所有bean的名称。
    	String[] beanDefinitionNames = acac.getBeanDefinitionNames();
        for (String beanDefinitionName : beanDefinitionNames) {
   
            System.out.println(beanDefinitionName);
        }
    }
}

输出结果

在这里插入图片描述


包扫描+组件标注注解(@Controller/@Service/@Repository/@Component)
@Configuration//配置类=配置文件 告诉spring这个是个配置类
@ComponentScan(value = {
   "com.wangshua
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值