使用説明書
このアノテーションは主にメソッドで使用され、現在のメソッド本体には最終的にBeanインスタンスを生成するロジックが含まれ、メソッドの戻り値はBeanであることを示します。このBeanは、Springによる管理のためにコンテナに追加されます。デフォルトでは、Bean名はBeanアノテーションを使用するメソッド名です。@Beanは通常、@ Componentまたは@Configurationで使用されます。
@Bean
クラスとBeanの対応を明示的に宣言し、ユーザーが実際のニーズに応じてBeanインスタンスを作成および構成できるようにします。
この注釈は次と同等です。
<bean id="useService" class="com.test.service.UserServiceImpl"/>
一般的なコンポーネント
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyConfigration {
@Bean
public User user() {
return new User;
}
}
import org.springframework.beans.factory.annotation.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です。3つすべてを使用できます。
import org.springframework.context.annotation.Bean;
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:
return new serviceImpl3();
}
}
リファレンス:https : //www.hangge.com/blog/cache/detail_2506.html
https://www.jianshu.com/p/2f904bebb9d0