Bean? 対象?いったい何が違うの?
15226 ワード
スプリングを習うとき、beanという言葉をよく聞きます.
Bean? 豆.私は本当にたくさん考えて、毎回これが何なのかを考えて、今すべてよく勉強しなければならないと思っています.
よく知っておきましょう
ベンって何?
スプリングはスプリングコンテナによってオブジェクトを管理し、スプリングコンテナで管理されるオブジェクトをbeanと呼ぶ.
この文章を見ると、そう思う人がいます.
対象?オブジェクトがbeanであれば、次のコードもbeanですか?
beanが相手って言ったでしょ?でもどうしてこれじゃないの?
正確にはIoCコンテナ管理の対象です.
どういう意味だと思う?
上のコードはオブジェクトで、beanではありません.IoC容器は管理しないからです.
では、この和弦はどうですか.
ApplicationContextはbeanファクトリを継承したSpringコンテナのタイプです.
スプリングコンテナ管理、IoCコンテナ管理.これはどういう意味ですか.
最初は筆者もこの2つが違うと思っていましたが、勉強の中でこの2つが同じであることがわかりました.
なぜ同じなのか、IOC/DI関連の記事で説明しましょう
beanの作成方法
Component ScanningメソッドまたはXMLまたはJavaプロファイルに直接登録するメソッド.
Component Scanning
この点を理解するために、深く理解してみましょう.
@Controllerまたは@RestControllerを使用します.これはComponentと呼ばれています.
これは何の音か,おそらく頭がつかめないだろう.
最初からゆっくり研究する.
ここのRestControllerはどんな顔をしていますか?
では、どこでスキャンしますか?
SpringBootアプリケーションを作成する場合は、src/main/javaで[プロジェクト名]アプリケーションを作成します.javaというファイルがあるはずです.この中を見せてください.
SpringBootApplicationの説明でSpringBootのスタートです.
でもどうして急にこんなことを言ったの?次に、宣言には、コンポーネントスキャンを行う論理が含まれます.
中に入ってみるといろいろな論理がありますが、そこまで知るには時間もかかるのでここまで知っておきましょう
ComponentScan Arotationは「Componentを探せ!一種の模倣といえる.
どこから探せばいいですか?
SpringBootアプリケーション宣言からすべてのサブパッケージに貼られると、筆者が前述したRestControlまたはControlは、必ずしもこの2つだけではなく、Repository、Service、Configurationを使用する宣言があります.その代表的なものが筆者が今述べている.
彼らを全部見つけてbeanとして登録します.
Java設定
XMLやJavaでの設定方法は、Javaでの設定方法について解説します.
上のクラスにbeanを登録する設定コードを書きます.
まず、構成説明を作成し、クラスにbeanを登録します.
RestControllerやConrollerやComponentを貼らなくてもBen対象になりますか?
そうだ.貼る必要はありません
beanオブジェクトの読み込み
テストコードを簡単に作成して理解してください.
ApplicationContextのみ使用
上記の例では、ApplicationContextを使用してbeanの使用方法を例に挙げ、テストコードを記述するために使用します.
でもそうすると、生成者を呼んで、コードが長くなったような気がします.
Autowiredを使用してロードできます.
Autowired + ApplicationContext
以下の動画をもとに筆者がまとめた内容.一度見ればよかった.本当に良いビデオでした
例題学習のスプリング入門7。空(bean)
Bean? 豆.私は本当にたくさん考えて、毎回これが何なのかを考えて、今すべてよく勉強しなければならないと思っています.
よく知っておきましょう
ベンって何?
スプリングはスプリングコンテナによってオブジェクトを管理し、スプリングコンテナで管理されるオブジェクトをbeanと呼ぶ.
この文章を見ると、そう思う人がいます.
対象?オブジェクトがbeanであれば、次のコードもbeanですか?
BeanTest bean = new BeanTest();
いいえ.これはただのオブジェクトで、beanではありません.beanが相手って言ったでしょ?でもどうしてこれじゃないの?
正確にはIoCコンテナ管理の対象です.
どういう意味だと思う?
上のコードはオブジェクトで、beanではありません.IoC容器は管理しないからです.
では、この和弦はどうですか.
ApplicationContext applicationContext;
public void Bean(){
BeanTest bean = applicationContext.getBean(BeanTest.class);
}
ここで宣言したbeanはbeanですか?そうだ.ApplicationContextで管理しているからです.ApplicationContextはbeanファクトリを継承したSpringコンテナのタイプです.
スプリングコンテナ管理、IoCコンテナ管理.これはどういう意味ですか.
最初は筆者もこの2つが違うと思っていましたが、勉強の中でこの2つが同じであることがわかりました.
なぜ同じなのか、IOC/DI関連の記事で説明しましょう
beanの作成方法
Component ScanningメソッドまたはXMLまたはJavaプロファイルに直接登録するメソッド.
Component Scanning
この点を理解するために、深く理解してみましょう.
@Controllerまたは@RestControllerを使用します.これはComponentと呼ばれています.
これは何の音か,おそらく頭がつかめないだろう.
最初からゆっくり研究する.
@RestController
public void getBeans(){}
このようなRestControllerがあると言います.ここのRestControllerはどんな顔をしていますか?
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
@AliasFor(annotation = Controller.class)
String value() default "";
}
こんな風に育つ.以上、様々な説明がありますが、筆者は上記で、Controllerはコンポーネントで構成されています.コントローラに入りましょう@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Controller {
@AliasFor(annotation = Component.class)
String value() default "";
}
Controllerはこのような人ですが、コンポーネント言語を使っています.さらに中に入ってみると良いのですが、まずコンポーネントスキャンを知るためにここまで知っておき、Controller操作とRestController操作がコンポーネントで縛られていると思えば便利です.では、どこでスキャンしますか?
SpringBootアプリケーションを作成する場合は、src/main/javaで[プロジェクト名]アプリケーションを作成します.javaというファイルがあるはずです.この中を見せてください.
@SpringBootApplication
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
こう書いてあります.SpringBootApplicationの説明でSpringBootのスタートです.
でもどうして急にこんなことを言ったの?次に、宣言には、コンポーネントスキャンを行う論理が含まれます.
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication { ... }
省略されている部分も多いですが、SpringBootApplicationの名前はどうなっているのでしょうか、ComponentScanがあります.はい、次にノイズの中でコンポーネントスキャンを行う機能です.中に入ってみるといろいろな論理がありますが、そこまで知るには時間もかかるのでここまで知っておきましょう
ComponentScan Arotationは「Componentを探せ!一種の模倣といえる.
どこから探せばいいですか?
SpringBootアプリケーション宣言からすべてのサブパッケージに貼られると、筆者が前述したRestControlまたはControlは、必ずしもこの2つだけではなく、Repository、Service、Configurationを使用する宣言があります.その代表的なものが筆者が今述べている.
彼らを全部見つけてbeanとして登録します.
Java設定
XMLやJavaでの設定方法は、Javaでの設定方法について解説します.
public class TestConfig{}
上記のカテゴリがあると仮定します.上のクラスにbeanを登録する設定コードを書きます.
まず、構成説明を作成し、クラスにbeanを登録します.
@Configuration
public class TestConfig{
@Bean
public TestController testController(){
return new TestController();
}
}
このように記述すると、TestControllerはbeanオブジェクトになります.RestControllerやConrollerやComponentを貼らなくてもBen対象になりますか?
そうだ.貼る必要はありません
public class TestController{}
このように書いても,このテストコントローラはbeanオブジェクトとなる.beanオブジェクトの読み込み
テストコードを簡単に作成して理解してください.
ApplicationContextのみ使用
上記の例では、ApplicationContextを使用してbeanの使用方法を例に挙げ、テストコードを記述するために使用します.
@SpringBootTest
public class TestConrollerTest{
private final ApplicationContext applicationContext;
public TestConrollerTest(ApplicationContext applicationContext){
this.applicationContext = applicationContext;
}
@Test
public void TestDI(){
TestConroller bean = applicationCotnext.getBean(TestConroller);
assertThat(bean).isNotNull;
}
}
この形式でbeanを呼び出すことができます.でもそうすると、生成者を呼んで、コードが長くなったような気がします.
Autowiredを使用してロードできます.
Autowired + ApplicationContext
@SpringBootTest
public class TestConrollerTest{
@Autowired
ApplicationContext applicationContext;
@Test
public void TestDI(){
TestConroller bean = applicationCotnext.getBean(TestConroller);
assertThat(bean).isNotNull;
}
}
Autowired Arnolationを使用して、関数を構築することなく使用できます.以下の動画をもとに筆者がまとめた内容.一度見ればよかった.本当に良いビデオでした
例題学習のスプリング入門7。空(bean)
Reference
この問題について(Bean? 対象?いったい何が違うの?), 我々は、より多くの情報をここで見つけました https://velog.io/@vpdls1511/Spring-Bean이란-무엇인가テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol