Javaのアノテーション関数の詳細な紹介
1. 説明
は @Component アノテーションと同じ機能を持ちますが、異なる意味を持つ 3 つのアノテーションがあります:
1) @Repository: Dao 実装クラスにアノテーションが付けられます
2) @Service: Service 実装クラスにアノテーションが付けられます
3) @Controller: SpringMVC プロセッサーでアノテーションが付けられます
Bean スコープ:
@Scope("prototype"): オブジェクト作成モードを指定するために使用されます。これは、シングルトン モードまたはプロトタイプ モードにすることができます。デフォルトはシングルトン
基本タイプです。属性インジェクション :
@Value
@Autowired: byType モードでのアノテーションインジェクション、つまり型に基づくアノテーションインジェクション
@Qualifier("mySchool"): byName モードでのアノテーションインジェクションは、使用時に @Autowired と組み合わせて使用する必要があります@Qualifier
ドメイン属性アノテーション:
@Resource: name 属性がない場合、byType モードでのアノテーション注入ですが、注入されるオブジェクトは 1 つしか持てないことが前提です
@Resource(name="mySchool"): アノテーション注入byName モードで
Bean 寿命の始まりと終わり:
@PostConstruct: 現在の Bean の初期化が完了しました
@PreDestroy: 現在の Bean が破棄されようとしています
@Configuration: 現在のクラスがSpring コンテナ、つまりすべての Bean はこのクラスによって作成されます
注:
例を挙げる前にいくつかの問題を宣言させてください:
1. アノテーションは spring-aop-4.3.9 に依存する必要があります。 RELEASE.jar パッケージなので、依存関係パッケージをインポートする必要があります。
2. アノテーションを使用して挿入します。設定ファイルには制約ヘッダー ファイルを追加する必要があります:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context/spring-context.xsd">
このヘッダー ファイルは Spring のドキュメントから自分で見つけることもできます:
3. SpringJUnit4 テストを使用する場合は、spring-test-4.3.9.RELEASE.jar パッケージもインポートする必要があります
2. 最初に School クラスを作成します:
package com.ietree.spring.basic.annotation.demo1;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component; @Component("mySchool")public class School { @Value(value = "清华大学")private String name;public School() {super(); }public School(String name) {super();this.name = name; }public void setName(String name) {this.name = name; } @Overridepublic String toString() {return "School [name=" + name + "]"; } }
package com.ietree.spring.basic.annotation.demo1;import javax.annotation.PostConstruct;import javax.annotation.PreDestroy;import javax.annotation.Resource;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;/** * 说明: * 与@Component注解功能相同,但意义不同的注解还有三个: * 1)@Repository:注解在Dao实现类上 * 2)@Service:注解在Service实现类上 * 3)@Controller:注解在SpringMVC的处理器上 * * Bean作用域: * @Scope("prototype"):用于指定对象创建模式,可以是单例模式或者原型模式,默认是singleton * * 基本类型属性注入: * @Value * * @Autowired:byType方式的注解式注入,即根据类型注解 * @Qualifier("mySchool"):byName方式的注解式注入,在使用@Qualifier时必须与@Autowired联合使用 * * 域属性注解: * @Resource:不加name属性则为byType方式的注解式注入,但前提是注入的对象只能有一个 * @Resource(name="mySchool"):byName方式的注解式注入 * * Bean的生命始末: * @PostConstruct:当前Bean初始化刚完毕 * @PreDestroy:当前Bean即将被销毁 *///@Scope("prototype")@Component("myStudent")public class Student { @Value(value = "小明")private String name; @Value(value = "25")private int age; // @Autowired// @Qualifier("mySchool")// @Resource(name="mySchool") @Resourceprivate School school;// 对象属性,也叫做域属性public Student() {super(); } public Student(String name, int age) {super();this.name = name;this.age = age; }public void setName(String name) { System.out.println("执行setName()");this.name = name; }public void setAge(int age) { System.out.println("执行setAge()");this.age = age; }public void setSchool(School school) {this.school = school; } @Overridepublic String toString() {return "Student [name=" + name + ", age=" + age + ", school=" + school + "]"; } @PostConstructpublic void initAfter(){ System.out.println("当前Bean初始化刚完毕"); } @PreDestroypublic void preDestroy(){ System.out.println("当前Bean即将被销毁"); } }
package com.ietree.spring.basic.annotation.demo1;import org.springframework.beans.factory.annotation.Autowire;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * @Configuration:表示当前类充当Spring容器,即所有的Bean将由这个类来创建 */@Configurationpublic class MyJavaConfig { @Bean(name="mySchool")public School mySchoolCreator(){return new School("清华大学"); } // autowire=Autowire.BY_TYPE:指从当前类这个容器中查找与域属性的类型具有is-a关系的Bean// autowire=Autowire.BY_NAME:指从当前类这个容器中查找与域属性同名的Bean@Bean(name="myStudent", autowire=Autowire.BY_TYPE)public Student myStudentCreator(){return new Student("小明", 25); } }
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context/spring-context.xsd">
package com.ietree.spring.basic.annotation.demo1;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations="classpath:com/ietree/spring/basic/annotation/demo1/applicationContext.xml")public class MyTest { @Autowiredprivate Student student; @Testpublic void test01() { String resource = "com/ietree/spring/basic/annotation/demo1/applicationContext.xml"; ApplicationContext ctx = new ClassPathXmlApplicationContext(resource); School school = (School) ctx.getBean("mySchool"); System.out.println(school); Student student = (Student) ctx.getBean("myStudent"); System.out.println(student); ((ClassPathXmlApplicationContext)ctx).close(); } public void test02(){ System.out.println(student); } }
以上がJavaのアノテーション関数の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









2023年、AI技術が注目を集め、プログラミング分野を中心にさまざまな業界に大きな影響を与えています。 AI テクノロジーの重要性に対する人々の認識はますます高まっており、Spring コミュニティも例外ではありません。 GenAI (汎用人工知能) テクノロジーの継続的な進歩に伴い、AI 機能を備えたアプリケーションの作成を簡素化することが重要かつ緊急になっています。このような背景から、AI 機能アプリケーションの開発プロセスを簡素化し、シンプルかつ直観的にし、不必要な複雑さを回避することを目的とした「SpringAI」が登場しました。 「SpringAI」により、開発者はAI機能を搭載したアプリケーションをより簡単に構築でき、使いやすく、操作しやすくなります。

Spring+AI は業界リーダーとして、強力で柔軟な API と高度な機能を通じてさまざまな業界に最先端のソリューションを提供します。このトピックでは、さまざまな分野での Spring+AI の応用例を詳しく掘り下げ、Spring+AI がどのように特定のニーズを満たし、目標を達成し、これらの教訓をより広範囲のアプリケーションに拡張するかを示します。このトピックが Spring+AI の無限の可能性をより深く理解し、活用するきっかけになれば幸いです。 Spring フレームワークはソフトウェア開発の分野で 20 年以上の歴史があり、Spring Boot 1.0 バージョンがリリースされてから 10 年が経過しました。今、その春に異論を唱える人はいない

Spring プログラムによるトランザクションを実装する方法: 1. TransactionTemplate を使用する; 2. TransactionCallback および TransactionCallbackWithoutResult を使用する; 3. Transactional アノテーションを使用する; 4. TransactionTemplate を @Transactional と組み合わせて使用する; 5. トランザクション マネージャーをカスタマイズする。

JUnit フレームワークのアノテーションは、テスト メソッドの宣言と構成に使用されます。主なアノテーションには、@Test (テスト メソッドの宣言)、@Before (テスト メソッドの実行前に実行されるメソッド)、@After (テスト メソッドの後に実行されるメソッド) があります。が実行される)、@ BeforeClass (すべてのテスト メソッドが実行される前に実行されるメソッド)、@AfterClass (すべてのテスト メソッドが実行された後に実行されるメソッド)、これらのアノテーションは、テスト コードを整理して簡素化し、テスト コードの信頼性を向上させるのに役立ちます。明確な意図と構成を提供することで、読みやすさと保守性を向上させます。

はじめに: PHPDoc は、理解しやすく有益なドキュメントを作成する PHP コードのコメント標準です。 PHPDoc では、特定のコメント タグを使用することで、開発者が関数、クラス、メソッド、その他のコード要素に関する重要な詳細を提供できるようになります。この高度なガイドでは、PHPDoc を詳しく説明し、その機能を実証し、効果的な文書化戦略を提供します。構文とタグ: PHPDoc コメントは二重スラッシュ (//) または複数行コメント (/**/) で始まります。一般的なアノテーション タグをいくつか示します。 @param: 関数またはメソッドのパラメータを定義します。 @return: 関数またはメソッドの戻り値を指定します。 @throws: 関数またはメソッドによってスローされる可能性のある例外について説明します。 @var: クラスの属性またはインスタンスを定義します

Spring でトランザクション分離レベルを設定する方法: 1. @Transactional アノテーションを使用します; 2. Spring 構成ファイルに設定します; 3. PlatformTransactionManager を使用します; 4. Java 構成クラスに設定します。詳細な導入方法: 1. @Transactional アノテーションを使用し、トランザクション管理が必要なクラスまたはメソッドに @Transactional アノテーションを追加し、属性に分離レベルを設定します。 2. Spring の設定ファイルなどで

Jackson ライブラリのアノテーションは、JSON のシリアル化と逆シリアル化を制御します。 シリアル化: @JsonIgnore: プロパティを無視します @JsonProperty: 名前を指定します @JsonGetter: get メソッドを使用します @JsonSetter: set メソッドを使用します Deserialization: @JsonIgnoreProperties: プロパティ @ JsonProperty を無視します:名前を指定 @JsonCreator: コンストラクターを使用 @JsonDeserialize: カスタム ロジック

MyBatis アノテーション動的 SQL の使用法の詳細な紹介 MyBatis は、便利な永続化操作を提供する永続化レイヤー フレームワークです。実際の開発では、通常、柔軟なデータ操作を実現するために、ビジネス ニーズに基づいて SQL ステートメントを動的に生成する必要があります。 MyBatis アノテーション動的 SQL は、この要求を満たすように設計されています。
