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已经启动。。。");
}
}
1
2
3
4
5
6
7
8
9
10
启动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();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
在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();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
运行结果:
点赞 2
————————————————
版权声明:本文为CSDN博主「Java小后生」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42694286/article/details/83211489