@Configuration注解、@Bean注解以及配置自动扫描、bean作用域

原创 2018年04月17日 17:05:10
/*
@Configuration标注在类上,相当于把该类作为spring.xml配置文件中的<beans>,作用为:配置spring容器(应用上下文)
@Bean 可理解为用spring.xml里面的<bean>标签
注:
(1)、@Bean注解在返回实例的方法上,如果未通过@Bean指定bean的名称,则默认与标注的方法名相同;
(2)、@Bean注解默认作用域为单例singleton作用域,可通过@Scope(“prototype”)设置为原型作用域;
(3)、既然@Bean的作用是注册bean对象,那么完全可以使用@Component、@Controller、@Service、@Ripository等注解注册bean,当然需要配置@ComponentScan注解进行自动扫描。
(4)、@Bean注解注册bean,同时可以指定初始化和销毁方法  @Bean(name="testNean",initMethod="start",destroyMethod="cleanUp")
ApplicationContext  体系架构:https://blog.csdn.net/h12kjgj/article/details/53725507
AnnotationConfigApplicationContext(用AnnotationConfigApplicationContext替换ClassPathXmlApplicationContext) 详解:https://blog.csdn.net/tuoni123/article/details/79976105
*/
@Configuration
public class SpringConfig {

    public SpringConfig(){
        System.out.println("spring容器启动初始化。。。");
    }

    @Bean
    public WpTerms wpTerms(){//自定义
        return new WpTerms();
    }

    //
    @Bean(name = "wpTermmeta")
    public WpTermmeta wpTermmeta() {//自定义
        return new WpTermmeta("allen","28");
    }

    public static void main(String[] args) {
        ApplicationContext annotationContext = new AnnotationConfigApplicationContext(SpringConfig.class);
        ApplicationContext annotationContext1 = new AnnotationConfigApplicationContext("com.wordpress.master.bean");
        //以前加载spring-context.xml文件的写法
        //ApplicationContext context = new ClassPathXmlApplicationContext("spring-context.xml");
        WpTermmeta c = annotationContext.getBean("wpTermmeta", WpTermmeta.class);
        WpTermmeta c1 = annotationContext1.getBean("wpTermmeta", WpTermmeta.class);
        Assert.assertEquals("allen",c.getMetaKey()); //测试
        Assert.assertEquals("allen",c1.getMetaKey()); //测试
    }
}
package com.wordpress.master.bean;


import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.stereotype.Component;

//添加注册bean的注解
@Component
public class TestBean {

    public void sayHello(){
        System.out.println("TestBean sayHello...");
    }

    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(TestConfiguration.class);
        //获取bean
        TestBean tb = (TestBean) context.getBean("testBean");
        tb.sayHello();
    }

}
package com.wordpress.master.bean;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration

//添加自动扫描注解,basePackages为TestBean包路径
@ComponentScan(basePackages = "com.wordpress.master.bean")
public class TestConfiguration {
    public TestConfiguration(){
        System.out.println("spring容器启动初始化。。。");
    }

    //取消@Bean注解注册bean的方式
    //@Bean
    //@Scope("prototype")
    //public TestBean testBean() {
    //  return new TestBean();
    //}
}




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

Spring整理系列(11)——@Configuration注解、@Bean注解以及配置自动扫描、bean作用域

1、@Configuration标注在类上,相当于把该类作为spring的xml配置文件中的,作用为:配置spring容器(应用上下文)package com.test.spring.support....
  • javaloveiphone
  • javaloveiphone
  • 2016-08-11 15:16:16
  • 28548

Spring Bean装配之Bean的定义及作用域的注解实现

1.概述: 2.Class扫描以及组件管理: 3.Bean的自动扫描机制:只要是该注解下面的类使用了相关的注解,就相当于为该类在上下文中创建了bean 4.如何使用过滤器自定义扫描其中使用到...
  • qq_28893679
  • qq_28893679
  • 2016-12-03 09:13:53
  • 935

SpringMVC自动扫描@Controller注解的bean

SpringMVC自动扫描@Controller注解的bean   若要对@Controller注解标注的bean进行自动扫描,必须将放置在dispatcherse...
  • u011789653
  • u011789653
  • 2018-01-26 19:11:26
  • 200

Spring常用注解,自动扫描bean

1 引入context命名空间(在Spring的配置文件中),配置文件如下: Xml代码   xmlns:context="http://www.springframework...
  • u011518709
  • u011518709
  • 2015-06-09 15:29:27
  • 2124

Spring整理系列 - @Configuration注解、@Bean注解以及配置自动扫描、bean作用域

1、@Configuration标注在类上,相当于把该类作为spring的xml配置文件中的&amp;lt;beans&amp;gt;,作用为:配置sp...
  • u011537073
  • u011537073
  • 2018-03-01 23:06:42
  • 65

Spring中基于Java的配置@Configuration和@Bean用法

Spring中为了减少xml中配置,可以生命一个配置类(例如SpringConfig)来对bean进行配置。 一、首先,需要xml中进行少量的配置来启动Java配置: ...
  • vvhesj
  • vvhesj
  • 2015-08-14 14:34:29
  • 121531

SSH下使用Spring注解自动注入bean

在SSH框架下,使用spring注解搭建自动注入的例子。
  • cuihaiyang
  • cuihaiyang
  • 2011-03-10 19:47:00
  • 15594

spring 注解扫描bean配置

1. 在applicationContext.xml配置如下:
  • zghwaicsdn
  • zghwaicsdn
  • 2015-07-02 14:36:05
  • 1704

让Spring自动扫描和管理Bean

前面的例子我们都是使用XML的bean定义来配置组件。在一个稍大的项目中,通常会有上百个组件,如果这些组件采用XML的bean定义来配置,显然会增加配置文件的体积,查找及维护起来也不太方便。Sprin...
  • yerenyuan_pku
  • yerenyuan_pku
  • 2016-10-19 17:19:43
  • 6627

Configuration注解类 Bean解析顺序

@PropertySource 加载properties @ComponentScan 扫描包 @Import 依赖的class @ImportResource 依赖的xml @Bean 创建bean...
  • u013076044
  • u013076044
  • 2017-08-12 14:31:43
  • 834
收藏助手
不良信息举报
您举报文章:@Configuration注解、@Bean注解以及配置自动扫描、bean作用域
举报原因:
原因补充:

(最多只允许输入30个字)