【Spring注解系列01】@Configuration与@Bean

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_37107022/article/details/88877156

1. @Configuration与@Bean

@Configuration:

告诉Spring这是一个配置类,配置类==配置文件。

@Configuration==beans.xml

@Bean:

给容器中注册一个Bean;类型为返回值的类型,id默认是用方法名作为id,可以给@Bean设置value来修改id,比如@Bean("personAlias")。

@Bean==<bean></bean>

2.配置对比与验证

通常的xml配置方式如下,beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       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 http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <!--    use-default-filters若想自定义过滤器生效,则必须将该值设为false-->
    <!--<context:component-scan base-package="com.java" ></context:component-scan>-->
    
    <!--注入bean-->
    <beans>
        <bean id="person" class="com.java.model.Person">
            <property name="id" value="11111"></property>
            <property name="name" value="vhsj"></property>
        </bean>
    </beans>
</beans>

采用@Configuration注入方式如下:

@Configuration
public class BeanConfig {

    //@Bean
    @Bean("personAlias")
    public Person person2(){
        return new Person("2222","lisi");
    }
}

测试如下:

扫描二维码关注公众号,回复: 5756585 查看本文章
public class BeanDependencyInjectionTest {

    public static void main(String[] args) {
        System.out.println("-----------------------------xml 方式注入-----------------------------------");
        //xml 方式注入
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
        Person person = (Person) applicationContext.getBean("person");
        System.out.println("person---->"+person);
        //获取所有注入Bean的名称
        String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames();
        for (String name : beanDefinitionNames) {
            System.out.println(name);
        }

        System.out.println("-----------------------------annotation 注解方式注入-----------------------------------");
        //annotation 注解方式注入
        ApplicationContext applicationContext1 = new AnnotationConfigApplicationContext(BeanConfig.class);
        Person person1 = applicationContext1.getBean(Person.class);
        System.out.println("person1---->"+person1);
        //获取所有注入Bean的名称
        String[] beanDefinitionNames1 = applicationContext1.getBeanDefinitionNames();
        for (String name : beanDefinitionNames1) {
            System.out.println(name);
        }
    }
}

运行结果:

-----------------------------xml 方式注入-----------------------------------
person---->Person{id='11111', name='vhsj'}
person
-----------------------------annotation 注解方式注入-----------------------------------
person1---->Person{id='2222', name='lisi'}
org.springframework.context.annotation.internalConfigurationAnnotationProcessor
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
org.springframework.context.event.internalEventListenerProcessor
org.springframework.context.event.internalEventListenerFactory
beanConfig
personAlias

猜你喜欢

转载自blog.csdn.net/baidu_37107022/article/details/88877156