Spring @Bean注解配置及使用方法解析

网友投稿 542 2022-12-08


Spring @Bean注解配置及使用方法解析

使用说明

这个注解主要用在方法上,声明当前方法体中包含了最终产生 bean 实例的逻辑,方法的返回值是一个 Bean。这个 bean 会被 Spring 加入到容器中进行管理,默认情况下 bean 的命名就是使用了 bean 注解的方法名。@Bean 一般和 @Component 或者 @Configuration 一起使用。

@Bean 显式声明了类与 bean 之间的对应关系,并且允许用户按照实际需要创建和配置 bean 实例。

该注解相当于:

普通组件

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

@Configuration

public class MyConfigration {

@Bean

public User user() {

return new User;

}

}

import http://org.springframework.beans.factory.annhttp://otation.Autowired;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RestController;

@RestController

public class UserController {

@Autowired

User user;

@GetMapping("/test")

public User test() {

return user.test();

}

}

命名组件

bean 的命名为:user,别名为:myUser,两个均可使用

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

@Configuration

public class MyConfigration {

@Bean(name = "myUser")

public User user() {

return new User;

}

}

bean 的命名为:user,别名为:myUser / yourUser,三个均可使用

import org.springframework.context.annotation.Behttp://an;

import org.springframework.context.annotation.Configuration;

@Configuration

public class MyConfigration {

@Bean(name = {"myUser", "yourUser"})

public User user() {

return new User;

}

}

Bean 初始化和销毁

public class MyBean {

public void init() {

System.out.println("MyBean初始化...");

}

public void destroy() {

System.out.println("MyBean销毁...");

}

public String get() {

return "MyBean使用...";

}

}

@Bean(initMethod="init", destroyMethod="destroy")

public MyBean myBean() {

return new MyBean();

}

只能用 @Bean 不能使用 @Component

@Bean

public OneService getService(status) {

case (status) {

when 1:

return new serviceImpl1();

when 2:

return new serviceImpl2();

when 3:

returnjucICkecw new serviceImpl3();

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java POI读取excel中数值精度损失问题解决
下一篇:详解@Autowired(required=false)注入注意的问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~