1,@Configuration与@Bean
 
@Configuration:
告诉Spring这是一个配置类,配置类==配置文件。

  • @Configuration==beans.xml

@Bean:

  • 给容器中注册一个Bean;类型为返回值的类型,id默认是用方法名作为id。
  • @Bean 等价于 <bean></bean>
  • 可以给@Bean设置value来修改id,比如@Bean("personAlias")。
  • 可以在@bean中指定初始化和销毁方法
@Bean(value = "beanLife",initMethod = "init", destroyMethod = "destroy")

等价于

<bean id="person" class="com.java.model.Person"  init-method="init" destroy-method="destroy"></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");

    }

}

测试代码:

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
 

@Configuration与@Bean的更多相关文章

  1. @Configuration 和 @Bean

    1. @Bean: 1.1 定义 从定义可以看出,@Bean只能用于注解方法和注解的定义. @Target({ElementType.METHOD, ElementType.ANNOTATION_TY ...

  2. Springboot@Configuration和@Bean详解

    Springboot@Configuration和@Bean详解 一.@Configuration @Target({ElementType.TYPE}) @Retention(RetentionPo ...

  3. Spring的Java配置方式—@Configuration和@Bean实现Java配置

    Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置. 1.@Configuration 和 @BeanSpring的Java配置方式是通过 @Configuration 和 @Be ...

  4. @Configuration与@Bean作用

    Spring的Java配置方式是通过@Configuration和@Bean这两个注解来实现 @Configuration可以作用在任意类上,表示该类是一个配置类,其实就相当于一个xml配置文件. @ ...

  5. Spring @Configuration 和 @Bean 注解

    @Configuration 和 @Bean 注解 带有 @Configuration 的注解类表示这个类可以使用 Spring IoC 容器作为 bean 定义的来源.@Bean 注解告诉 Spri ...

  6. @Configuration和@Bean的用法和理解

    spring Boot提倡约定优于配置,如何将类的生命周期交给spring 1.第一种自己写的类,Controller,Service. 用@controller @service即可 2.第二种,集 ...

  7. @Configuration和@Bean

    @Configuration可理解为用spring的时候xml里面的标签 @Bean可理解为用spring的时候xml里面的标签 Spring Boot不是spring的加强版,所以@Configur ...

  8. 0006SpringBoot中@Configuration与@Bean联合使用

    需求:将某个普通类做为组件注册到容器中,可通过如下办法 1.定义HelloService类 package springboot_test.springboot_test.service; publi ...

  9. @Configuration结合@Bean实现对象的配置

    @Configuration结合@Bean实现对象的配置 前提:最近项目中需要做支付接口,支付宝以及微信支付,本文并不介绍如何写支付接口,而是通过这个示例讲解配置应该怎么写,项目中使用的是Kotlin ...

随机推荐

  1. Codeforces 1194B. Yet Another Crosses Problem

    传送门 直接枚举填满哪一行,然后看看这一行填满以后哪一列最小 这个预处理一下 $cnt[i]$ 表示初始时第 $i$ 列有几个位置填满就可以做到 $O(m)$ 对于所有情况取个 $min$ 就是答案, ...

  2. 关于的 let 关键字的一个小问题

    刚才在看阮一峰老师的<ES6标准入门>,在介绍 let 那一段时有这么一段话 我就自己在控制台试了一下这段代码,输出果然的是"abc",于是我就把代码稍微修改了下 也没 ...

  3. 请手写代码实现一个promise

    第一步:promise的声明 class Promise{ // 构造器 constructor(executor){ // 成功 let resolve = () => { }; // 失败 ...

  4. node + express搭建api项目

    express框架 描述 express是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能. 安装 // 1.使用npm淘宝镜像--cn ...

  5. Excel中的常用快捷键

    1)工作表之间快速切换 Ctrl+PageUp切换的是当前所在工作表的前一个工作表, Ctrl+PageDown切换的是当前所在工作表的后一个工作表. 2)Ctrl +Home 强迫回到最前一个单元格 ...

  6. HTTP/HTTPS协议 & GraphQL(非RESTFUL方式)

    HTTP访问控制-跨域资源共享(CORS) 缓存管理 HTTP VS HTTPS架构 TLS协议 HTTPS会话劫持 基于HTTP协议的服务器消息机制 1. Longpoll 2. SSE 3. We ...

  7. Label 自适应文本(StoryBoard/xib)

    To make your label automatically resize height you need to do following: Set layout constrains for l ...

  8. appium 自动化测试环境搭建

    最近再学习appium,把学习的过程记录下来,以防止到时候 换个电脑就不知道这么安装搭建appium环境了. 环境搭建: 0.JDK环境是必备的,这里大家自行百度,   1.安装 node 环境,前辈 ...

  9. 微软商店(Microsoft store)删除之后恢复,一行代码搞定

    首先以管理员身份运行Windows PowerShell 地址C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\P ...

  10. (转)通过反编译深入理解Java String及intern

    原文链接:https://www.cnblogs.com/paddix/p/5326863.html 一.字符串问题 字符串在我们平时的编码工作中用的非常多,并且用起来非常简单,所以很少有人对其做特别 ...