Spring:Springでよく使われる注釈の概要


Spring:Springでよく使われる注釈の概要
1 . @Controller
クラスがSpring MVC controllerプロセッサであることを識別し、httpリクエストを処理するオブジェクトを作成します.
@Controller
public class TestController {
	@RequestMapping("/test")
	public String test(){
		return "hello";
	}
}

2 . @RestController
Spring 4以降に加えた注記は,@Controllerでjsonを返すには@ResponseBodyが必要であった.@Controllerの代わりに@RestControllerを直接使用する場合は、@ResponseBodyを再構成する必要はありません.デフォルトではjson形式が返されます.
@Controller
public class TestController {
	@RequestMapping("/test")
	public @ResponseBody String test(){
		return "hello";
	}
}

@RestController
public class TestController {
	@RequestMapping("/test")
	public String test(){
		return "hello";
	}
}

3 . @Service
ビジネス・レイヤ・コンポーネントを表示するために使用されます.すなわち、spring構成にビジネス・レイヤのクラスを注釈で注入します.
4 . @Autowired
beanをアセンブリするために使用されます.フィールドに書くか、方法に書くことができます.デフォルトでは、依存オブジェクトが存在する必要があります.null値を許可する場合は、@Autowired(required=false)などのrequiredプロパティをfalseに設定できます.
5 . @RequestMapping
クラス定義で使用:初歩的なリクエストマッピング情報を提供します.具体的な方法では、さらなるサブディビジョンマッピング情報を提供します.
6 . @RequestParam
要求データを機能処理方法のパラメータにマッピングします.
public Resp test(@RequestParam Integer id){
	return Resp.success(customerInfoService.fetch(id));
}

このidはインタフェースから渡されたパラメータidの値を受信するもので、インタフェースから渡されたパラメータ名があなたが受信したものと一致しない場合は@RequestParamのvalue属性で設定できます.以下のようにします.
public Resp test(@RequestParam(value="course_id") Integer id){
	return Resp.success(customerInfoService.fetch(id));
}

そのうちcourse_idはインタフェース伝達のパラメータであり、idはマッピングcourse_である.idのパラメータ名.
7 . @ModelAttribute
使用場所は3種類あります.
(1)メソッドへのタグ付け:メソッドへのタグ付けは、@RequestMappingタグ付けのメソッドごとに実行され、戻り値がある場合は、自動的にその戻り値がModelMapに追加されます.A.戻り値のあるメソッドでは、ModelAttributeがvalueを設定と、メソッドが返す値はこのvalueをkeyとし、パラメータで受け取った値をvalueとしてModelに格納、次のように実行すると、最終的にはmodelに相当する.addAttribute(“user_name”, name);@ModelAttributeにカスタムvalueがない場合は、modelに相当します.addAttribute(“name”, name);
@ModelAttribute(value="user_name")
public String before(@RequestParam(required = false) String name, Model model) {
	return name;
}

B.値を返さない方法:手動modelが必要である.addメソッド
@ModelAttribute
public void before(@RequestParam(required = false) Integer age, Model model) {
	model.addAttribute("age", age);
}

(2)メソッドのパラメータにマークする.メソッドのパラメータにタグを付けると、クライアントから渡されたパラメータが指定したオブジェクトに名前で注入され、そのオブジェクトが自動的にModelMapに追加され、Viewレイヤでの使用が容易になります.
8 . @Cacheable
キャッシュ・クエリーをマークします.メソッドまたはクラスで使用できます.1つのメソッドにタグを付けると、メソッドがキャッシュをサポートしていることを示し、1つのクラスにタグを付けると、クラスのすべてのメソッドがキャッシュをサポートしていることを示します.
パラメータ
説明する

value
名前
@Cacheable(value={”c1”,”c2”}
key
key
@Cacheable(value=”c1”,key=”#id”)
condition
条件
@Cacheable(value=”c1”,condition=”#id=1”)
たとえば@Cacheable(value="UserCache")は、この注釈がマークされたメソッドが呼び出されると、キャッシュからデータが取得され、キャッシュにデータがない場合はユーザーがクエリーロジックを記述し、クエリーが成功した後、結果をキャッシュに格納することを識別します.しかし、キャッシュといえばkey-valueの形式であるため、keyはメソッドのパラメータ(id)であり、valueはクエリの結果であり、ネーミングスペースUserCacheはspring*である.xmlで定義します.
@Cacheable(value="UserCache")
public Account getUserAge(int id) {  
	//          ,            ,            
	int age=getUser(id);   
	return age;   
} 

9 . @CacheEvict
キャッシュを空にするメソッドをマークします.このメソッドが呼び出されると、キャッシュが空になります.@CacheEvict(value=”UserCache”).
パラメータ
説明する

value
名前
@CachEvict(value={”c1”,”c2”}
key
key
@CachEvict(value=”c1”,key=”#id”)
condition
条件
すべてのキャッシュ内容@CachEveict(value="c 1",allEntries=true)を空にすることができます.beforeInvocationがメソッド実行前に@CachEveict(value="c 1",beforeInvocation=true)を空にするかどうか
10 . @Resource
@Resourceの役割は@Autowiredに相当しますが、@AutowiredはbyTypeで自動的に注入され、@ResourceはbyNameで自動的に注入されます.
@Resourceには2つの属性が重要で、nameとtypeに分けられ、Springは@Resource注記のname属性をbeanの名前に解析し、type属性をbeanのタイプに解析します.したがって、nameプロパティを使用する場合はbyNameの自動注入ポリシーを使用し、typeプロパティを使用する場合はbyTypeの自動注入ポリシーを使用します.nameもtypeも指定しない場合は、byName自動注入ポリシーが反射メカニズムで使用されます.
@Resourceアセンブリ順序:(1)nameとtypeを同時に指定した場合、Springコンテキストから唯一一致するbeanを見つけてアセンブリし、見つからない場合は例外を放出します.(2)nameが指定されている場合、コンテキストから名前(id)が一致するbeanを検索してアセンブリし、見つからない場合は例外を放出する.(3)typeが指定されている場合、コンテキストからタイプマッチングの唯一のbeanを見つけて組み立てる.見つからないか、複数が見つかった場合、例外が投げ出される.(4)nameもtypeも指定されていない場合、byName方式で自動的にアセンブリされます.一致しない場合は元のタイプに戻り、一致する場合は自動的にアセンブリされます.
11 . @PostConstruct
プロジェクトが起動したときにこの方法を実行することをマークするために使用されます.すなわちspringコンテナが起動したときに実行されます.非静的void()メソッドを修飾するために使用され、グローバル構成、データ辞書などのロードに使用されることが多い.
@PostConstructによって修飾されたメソッドは、サーバがサーブレットをロードするときに実行され、サーバによって一度だけ実行されます.PostConstructは、関数の構築後に実行され、init()メソッドの前に実行されます.
12 . @PreDestroy
@PreDestroyによって修飾されたメソッドは、サーバがサーブレットをアンインストールしたときに実行され、サーブレットのdestroy()メソッドと同様にサーバによって一度だけ呼び出されます.
13 . @Repository
データアクセスコンポーネント、すなわちDAOコンポーネントの寸法付けに使用
14 . @Component
一般的にコンポーネントを指します.コンポーネントが分類しにくい場合は、この注釈を使用して寸法を付けることができます.
15 . @Scope
spring beanを構成するための役割ドメイン.デフォルトは単一の例で、次のタイプがあります.
を選択します.
説明
singleton
単一のインスタンス・モード、グローバルに1つのインスタンスのみ
prototype
モデルモードでは、Beanを取得するたびに新しいインスタンスが作成されます.
request
HTTPリクエストごとに新しいbeanが生成され、現在のHTTPリクエスト内でのみ有効になります.
session
HTTPリクエストごとに新しいbeanが生成され、現在のHTTPセッション内でのみ有効になります.
global session
portalアプリケーションでのみ使用できます.global httpセッションごとにBeanインスタンスを新規作成します.
16 . @SessionAttributes
Spring MVCはデフォルトでモデルのデータをrequestドメインに格納します.1つのリクエストが終了すると、データは失効します.ページ間で使用する場合.ではセッションに使用する必要があります.一方、@SessionAttributes注釈は、モデル内のデータをsessionドメインに格納することができます.
を選択します.
説明
names
文字列配列.セッションに格納するデータの名前を書く必要があります
types
指定したパラメータのタイプに応じて、モデル内の対応するタイプのパラメータをセッションに格納します.
value
namesと同じです
@Controller
@SessionAttributes(value={"names"},types={Integer.class})
public class ScopeService {
	@RequestMapping("/testSession")
	public String test(Map map){
		map.put("names", Arrays.asList("a","b","c"));
		map.put("age", 12);
		
		return "hello";
	}
}

17 . @Required
beanプロパティsetterメソッドに適用され、影響を受けるbeanプロパティはXMLプロファイルの構成時に埋め込まなければならないことを示します.それ以外の場合、コンテナはBeanInitializationException例外を放出します.
18 . @Qualifier
同じタイプのbeanを複数作成し、1つのプロパティで1つだけアセンブリしたい場合は、@Qualifierコメントと@Autowiredコメントを使用して、どの本物のbeanがアセンブリされるかを指定することで混乱を解消できます.
参照先:https://mp.weixin.qq.com/s/x8vST8RqogCJ_i11CvoFAw