使用春ブーツは、しばらくの間でしたが、多くの注釈があっても、常に場所を理解してぼかすことになると、今度はそこに総括します。
注釈(アノテーション)のコンセプト
注釈は、メタデータ、注釈のためのJava5のサポートを始めているとのコメントがかなり異なっている、とランタイムが読み込まれ、クラスがロードされ、コンパイルすることができる特殊なマーカーで注釈付きコードとして理解することができ、かつ適切に行います処理。これらのマークは、クラスやメソッドの異なるパラメータに注釈を付ける、クラスやクラスのノートの規則に従って、各クラスやメソッドの拡張の方法のためのテンプレートとして見ることができる、あなたは異なるクラスが所定の位置に慣れることができますか様々なパラメータ及びプロセスの注釈の値。
5つの基本的な注意事項を提供していますJavaの:
@Override:親クラスで定義されたオーバーライドメソッド。サブクラスは親クラスのメソッドをオーバーライドすると、サブクラスは、このコメントを追加することができ、それをしないものと何が良いですか?これは、サブクラスは、低レベルのエラーを回避するために、親クラスのメソッドをオーバーライドしないことを保証します。
@deprecated:時代遅れのマーク。この注釈は、プログラム要素とメソッド推奨されないクラス、メソッドを使用して廃止された他のプログラムのクラスを表すために使用され、コンパイラは警告を与えます。
@SuppressWarningsは:コンパイラの警告を抑制する。ショーは、注釈修正要素と、そのようなクラスの変更など、コンパイラの警告のすべての子要素を、キャンセルされた、と彼のフィールドという、方法が警告されません。
@SafeVarargs:阻害ヒープ汚染警告。文のファジィタイプ:コンストラクタメソッドまたは(例えばジェネリックなど)変数パラメータである場合には、Javaコンパイラは未チェックの警告を報告します。宣言の主なコンストラクタとメソッドを決定するために、プログラマは潜在的に危険な可変引数パラメータは@SafeVarargsはそう、マークを使用することができ、その操作を実行しない場合、このような状況を考えると、Javaコンパイラは未チェック警告を報告しません。
@FunctionalInterface:機能インタフェース。インタフェースは、抽象メソッド(デフォルトの方法は、より多くのまたは静的メソッドの複数を含んでいてもよい)、のみインターフェース本体と抽象メソッド宣言定数フィールドであり、暗黙的に、公共の静的、finalとして宣言され、独自のインタフェースは内部持つことができない場合メソッドや変数。このアノテーション・インターフェースは、これが唯一の抽象メソッドであることを確認し、これが唯一のインターフェイスを変更することができることに留意すること。
注釈(アノテーション)のコメント
@SpringBootApplication:
EnableAutoConfigurationと@ComponentScan 3つの構成@、@Configuration:免責事項は春ブーツが自動的にプログラムに必要な設定を行いましょう、この構成は同等です:
@SpringBootApplication パブリッククラスApplicationMain { パブリック静的無効メイン(文字列[] args){ SpringApplication.run(Application.class、引数)。 } }
@Configuration:@Configurationは、我々は彼のパートナー@Beanを言及する必要があります言及しました。これらの2冊のノートには、単純泉の設定クラスは、対応するXML設定ファイルを置き換えるために使用することができます作成することができます。
< 豆> < 豆のid = "車" クラス= "com.test.Car" > < プロパティ名= "ホイール" REF = "ホイール" > </ プロパティ> </ 豆> < 豆ID = "ホイール" クラス= "com.test.Wheel" > </ 豆> </ 豆>
に相当
@Configuration パブリッククラスカンファレンス{ @Bean 公共駐車車(){ 車車=新車()。 car.setWheel(ホイール())。 車を返します。 } @Bean 公共ホイールホイール(){ ()新しいホイールを返します。 } }
@Configuration注釈は、クラスタイプがソース春のIoCコンテナのビーン定義として使用することができる識別する。@Bean注釈は@Bean注釈方法で、スプリングを指示Springアプリケーションコンテキストでビーンとして登録されなければならないオブジェクトを返します。一部のサードパーティのライブラリは、XMLファイルを使用する必要がある場合、まだメインクラスの設定項目として@Configurationクラスによって推奨されているように - xml構成ファイル@ImportResourceコメントをロードするために使用することができます。
@EnableAutoConfiguration:春のブート自動設定(自動設定):自動的に追加した依存jarファイルに応じて、Springアプリケーションを設定しようとする試み。HSQLDBの下のクラスパスは、あなたが手動で任意のデータベース接続豆を設定する必要がない場合は、次に我々は、自動的に(メモリ内の)データベースのメモリの種類を設定します。「あなたは@EnableAutoConfigurationまたは@SpringBootApplication @Configurationにメモを追加することができますクラスアップは、自動設定を選択します。あなたは、特定のアプリケーションが自動的にあなたがしたくないクラスを設定し、あなたがそれらを無効にするには、負の属性@EnableAutoConfigurationコメントを使用できることが判明した場合。
@ComponentScan:自動検出スキャニングアセンブリのタイプを示します。クラスは、コンポーネント、コントローラ、@、サービス@など@これらのアノテーションをスキャンする必要があり、そしてビーンとして登録されている場合同等、春には、自動的に@Configurationクラスを含むすべてのコンポーネントを、収集することができます。私たちはしばしば、インポート@Autowiredノートと組み合わせ@ComponentScan注釈検索豆を使用します。春は自動的@Configurationクラスを含むすべてのコンポーネントを、収集することができます。私たちはしばしば、インポート@Autowiredノートと組み合わせ@ComponentScan注釈検索豆を使用します。ノー言葉ならば、春ブーツは、次のクラスパックのスキャンを開始し、クラス嘘でリポジトリ注釈や他のサブパッケージ@のサービスを使用します。
@RestController:
@RequestMappingと共に、@Controllerと同様に、ResponseBody @Controllerおよび収集@層(例えば、アクションストラット)を制御するためのラベリング組立体はしばしば一緒に使用されます。サンプルコード:
@RestController @RequestMapping(「/ demoInfo2」) publicclass DemoController2 { @RequestMapping( "/テスト") (){ 公共の文字列のテスト 戻り、 "OK"。 } }
@ResponseBody:メソッドが直接書き込まHTTPレスポンスボディは、一般的APIは、RESTfulな構築するために取得した非同期データで使用された結果を返すことを示しています。使用後@RequestMapping、戻り値は、典型的には、結果は@responsebodyジャンプパスとして解釈されないが、直接HTTPレスポンスボディに書き込ま返さと、ジャンプパスとして解決されます。このような非同期としてJSONデータは、@responsebodyを追加した後、それが直接JSONデータを返します取得します。メモは一般@RequestMappingと組み合わせて使用されます。サンプルコード:
@RequestMapping(「/テスト」) @ResponseBody (){公共の文字列のテスト 戻り、」OK」。 }
@Controller:プロジェクトを担当するコントローラによってスプリングのクラスを定義するための制御装置は、対応するサービス・インターフェース(サービス層)に、ユーザによって送信されたURLリクエストを転送する、一般的に従来の方法で注釈注釈クラスに@RequestMappingを必要とします。サンプルコード:
@Controller @RequestMapping(“/demoInfo”) publicclass DemoController { @Autowired private DemoInfoService demoInfoService; @RequestMapping("/hello") public String hello(Map<String,Object> map){ System.out.println("DemoController.hello()"); map.put("hello","from TemplateController.helloHtml"); //会使用hello.html或者hello.ftl模板进行渲染显示. return"/hello"; } }
Other
@PropertySource:@PropertySource可以指定读取的配置文件,可以通过@Value注解获取值。
@ServletComponentScan在SpringBoot的main方法上使用@ServletComponentScan注解后,Servlet、Filter、Listener可以直接通过@WebServlet、@WebFilter、@WebListener注解自动注册,无需其他代码。
@EnableAsync:开启异步管理,简而言之就是启用多线程。
@EnableTransactionManagement:开启事务支持。
@Import:用来导入其他配置类。
@ImportResource:用来加载xml配置文件。
@Autowired:自动导入依赖的bean
@Service:一般用于修饰service层的组件
@Repository:使用@Repository注解可以确保DAO或者repositories提供异常转译,这个注解修饰的DAO或者repositories类会被ComponetScan发现并配置,同时也不需要为它们提供XML配置项。
@Bean:用@Bean标注方法等价于XML中配置的bean。
@Value:注入Spring boot application.properties配置的属性的值。示例代码:
@Value(value = “#{message}”) private String message;
@Inject:等价于默认的@Autowired,只是没有required属性;
@Component:泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
@Bean:相当于XML中的,放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理。
@AutoWired:自动导入依赖的bean。byType方式。把配置好的Bean拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。当加上(required=false)时,就算找不到bean也不报错。
@Qualifier:当有多个同一类型的Bean时,可以用@Qualifier(“name”)来指定。与@Autowired配合使用。@Qualifier限定描述符除了能根据名字进行注入,但能进行更细粒度的控制如何选择候选者,具体使用方式如下:
@Autowired @Qualifier(value = “demoInfoService”) private DemoInfoService demoInfoService;
@Resource(name=”name”,type=”type”):没有括号内内容的话,默认byName。与@Autowired功能相同。
JPA注解
@Entity:@Table(name=”“):表明这是一个实体类。一般用于jpa这两个注解一般一块使用,但是如果表名和实体类名相同的话,@Table可以省略
@MappedSuperClass:用在确定是父类的entity上。父类的属性子类可以继承。
@NoRepositoryBean:一般用作父类的repository,有这个注解,spring不会去实例化该repository。
@Column:如果字段名与列名相同,则可以省略。
@Id:表示该属性为主键。
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = “repair_seq”):表示主键生成策略是sequence(可以为Auto、IDENTITY、native等,Auto表示可在多个数据库间切换),指定sequence的名字是repair_seq。
@SequenceGeneretor(name = “repair_seq”, sequenceName = “seq_repair”, allocationSize = 1):name为sequence的名称,以便使用,sequenceName为数据库的sequence名称,两个名称可以一致。
@Transient:表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性。如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic。@Basic(fetch=FetchType.LAZY):标记可以指定实体属性的加载方式
@JsonIgnore:作用是json序列化时将Java bean中的一些属性忽略掉,序列化和反序列化都受影响。
@JoinColumn(name=”loginId”):一对一:本表中指向另一个表的外键。一对多:另一个表指向本表的外键。
@OneToOne、@OneToMany、@ManyToOne:对应hibernate配置文件中的一对一,一对多,多对一。
SpringMVC相关注解
@RequestMapping:
@RequestMapping(“/path”)表示该控制器处理所有“/path”的UR L请求。RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。该注解有六个属性:
params:指定request中必须包含某些参数值是,才让该方法处理。
headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。
value:指定请求的实际地址,指定的地址可以是URI Template 模式
method:指定请求的method类型, GET、POST、PUT、DELETE等
consumes:指定处理请求的提交内容类型(Content-Type),如application/json,text/html;
produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回。
此外@RequestParam用在方法的参数前面。 @RequestParam String a = request.getParameter(“a”)。
@PathVariable:路径变量。如:
RequestMapping(“user/get/mac/{macAddress}”) public String getByMacAddress(@PathVariable String macAddress){ //do something; }
参数与大括号里的名字一样要相同。
SpringMVC新特性
@RequestMapping有了可以替代的选项,这些选项提供了对Restful风格的支持:
@GetMapping,处理get请求 ;
@PostMapping,处理post请求 ;
@PutMapping,处理put请求 ;
@DeleteMapping,处理delete请求;
例如@PostMapping
@PostMapping(value = "/user/login")
等价于
@RequestMapping(value = "/user/login",method = RequestMethod.POST)
其他@GetMapping,@PutMapping,@DeleteMapping也是类似等价于相同的@RequestMapping请求。
全局异常处理
@ControllerAdvice:包含@Component。可以被扫描到。统一处理异常。
@ExceptionHandler(Exception.class):用在方法上面表示遇到这个异常就执行以下方法。