Spring Boot中的@Configuration和@Bean

在springboot的properties中已经包含了很多的默认配置 这些默认配置能够帮我们完成大部分的配置,但是不能通过properties配置所有的bean,这个时候就需要Springboot中的@Configuration和@Bean来帮我完成了

@Configuration注解可以达到在Spring中使用xml配置文件的作用。

@Bean就等同于xml配置文件中的

@Configuration可理解为用spring的时候的xml文件

@Bean可理解为用spring的时候xml里面的bean标签

举例说明:

package com.example.demo;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.context.annotation.Configuration;

@Configuration
public class TestConfig {
	public TestConfig() {
		System.out.println("springboot已经启动。。。");
	} 
}

启动springboot可以看到:

在这里插入图片描述

springboot启动的同时已经加载了这个配置

注意:TestConfig 这个类要与启动类放在同一级目录 不然不会加载

现在通过一个小实例了解一下@bean

创建一个javaBean

package com.example.test1
public class TestBean {
	private String username="张三";
	private String url="www.baidu.com";
	private String password="12345";
 	 public void sayHello(){
        System.out.println("TestBean sayHello...");
    }
    public String toString(){
        return "username:"+this.username+",url:"+this.url+",password:"+this.password;
    }
    public void start(){
        System.out.println("TestBean 初始化。。。");
    }
    public void cleanUp(){
        System.out.println("TestBean 销毁。。。");
    }
}

  
package com.example.demo;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;

import com.example.test1.TestBean;

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

//@Bean注解注册bean,同时可以指定初始化和销毁方法
//@Bean(name="testNean",initMethod="start",destroyMethod="cleanUp")
@Bean
@Scope("prototype")
//默认是单例模式,即scope="singleton"。另外scope还有prototype、request、session、global session作用域。scope="prototype"多例 
//每次获取Bean的时候会有一个新的实例
public TestBean testBean() {
    return new TestBean();
}
}

在springboot启动类中

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.scheduling.annotation.EnableScheduling;

import com.example.test1.TestBean;

@SpringBootApplication
@EnableScheduling
public class SpringajaxApplication {

	public static void main(String[] args) {
		ConfigurableApplicationContext run = SpringApplication.run(SpringajaxApplication.class, args);
		TestBean bean =(TestBean) run.getBean("testBean");
		bean.sayHello();
	}
}

运行结果:
在这里插入图片描述

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页