01 SpringとSprigMVCの回顧
19347 ワード
記事の目次クライテリア Springコア Springフレーム設計原則 制御反転と依存注入 名詞解釈 コア注釈 接面プログラミング SpEL表現 ビーンのライフサイクル 非同期方法 タイミングタスク 小結 SpringMVCコア MVCモード思想 @Controller Advice ファイルアップロード Http Message Coverter サービスエンドプッシュ技術:SSE 小結 前言
SpringBoot自体はSpring開発方式を簡素化した新しい技術を追加していません.
Springの出現自体はJavaEEの開発を簡略化するためである.
しかしSpringシステムが大きくなるにつれてSpring自体も様々な配置に引っ張られ、Spring開発はJavaの半分xmlという戯れがあります.
Spring BootはSpring 4を利用して提供し始めた条件注釈で、Springプロジェクトの開発を大いに簡略化しました.
今の開発者は幸せです.言語からツールチェーンまで、そして今のネット環境と学習環境は勉強したいなら、収穫があります.
本文はSpringとSprigMVCの核心機能を整理して、基礎概念に対して説明しません.Springを勉強する前に、小さい仲間はSpringに対してある程度知っている必要があると提案します.
Springコア
Springフレーム設計原則
Springの出現はJavaEEの開発を簡略化するために設計過程でいくつかの基礎原則を遵守しています. POJOを用いて軽量級と最小侵入型の開発を行う .は、注入に依存し、インタフェースプログラミングに基づいて松結合 を実現する.は、AOPとデフォルト習慣によって声明式プログラミングを行う . AOPとテンプレートを使用してモード化コードを減らす 制御反転と依存注入
名詞の解釈制御反転 Javaコードを作成する時、一番長い操作は一つのオブジェクトを獲得することかもしれません.元の段階では、
いずれにしても、この対象は私達自身
Springでは、コンポーネントを作成してからSpringに管理し、必要なところで
オブジェクトを元の自分で作成し、Springで管理するプロセスに変更します.これはコントロール反転です.注入に依存するものは何ですか?
Springは私達の説明により、適切な対象を私達に渡して使用します.これは注入に依存しています.
コアコメント
制御反転と依存注入の間に、いくつかの注釈を使用します.
声明Bean:@Component、@Service、@Repository、@Controller
注入ビーム:@Autowired、@Inject、@Resource
@Configration:現在のクラスは構成クラスであると宣言します.
@ComponentScan:ビーンをスキャンし、スキャンされたビーンを初期化してSpring容器に入れて管理します.
面に向かってプログラミングする
プロセスとオブジェクト指向は、私たちがよく知っている2つのプログラミングモデルです.
面に向かうのも同じで、プログラミングの手本でもあります.
それは他のプログラミングの範式に対する転覆ではなくて、ただ1つの役に立つ補充です.適切な適用シーンがあります.
例えば、特定の方法の呼び出し前と呼び出し後、呼び出しの方法パラメータと戻り値を承諾したいです.この時はAOPを使うととても便利です.そうでなければ、私たちは手動でメソッド内部でログの印刷を行う必要があります.
SpEL式 は、固定された文字列をメンバー変数 に注入する. SpEL式を用いてシステム属性を取得し、注入する . SpEL表現を用いて乱数を生成する .他のビームの属性を注入する .注入ファイル ネットワークリソースを注入する 属性ファイルのキー値を注入する 注入プロファイル
ビーンのライフサイクル
ビーンの初期化と廃棄の時には何かをする必要があります.@Bean注釈を使用する場合、initMethodとdestoryMethod属性により を指定します.はビーンにおいて、@PostConstruct(コンストラクション実行後実行)と@Predestory(Bean破壊前に実行)を使用する場合、第二の方式を使用すると、JSR-250を追加して をサポートする必要があります.
非同期法
マルチスレッドを使用して、方法の非同期呼び出しを実現します.
1、スレッド池を配置する
Beanを実行する中で@Asyncを使ってコメントします.これは非同期のタスクです.クラスに表示されている場合、このクラスのすべての方法は非同期です.
タイム?タスク
いくつかの簡単なタイムミッションに対して、Springも自分の実現があります.
使用方法:
1、配置類に@EnbleSchedulingを使ってサポートを開始する
2、任務方法に@Scheduledを使用し、core表現で時間を設定する
Springの内容はもちろんこれだけではありませんが、SpringBootでは一部の内容が深く説明されています.
SpringMVCコア
MVCモード思想
MVCモードではないバックエンドコードを作成した場合、直接にサービスロジックを利用して実行します.
MVCのバックエンド開発に対する大きなメリットを深く感じられます.
MVCとは、バックエンド処理コンポーネントをモデル、ビュー、コントローラに区分し、各コンポーネントに独自の機能シーンがあり、コード上で階層化したものです.論理をはっきりさせる
@Controller Advice
コントローラの強化は、一般的にコントローラの全体構成に使用されます.
私がよく使う機能の一つは@Controller Adviceを使って全体の異常を捉えることです.
ファイルアップロード
すべてのMVCフレームはファイルアップロードに言及します.
Spring Bootの中にもっと簡潔な方法がありますので、ここでは言いません.
Http Message Coverter
サービス先押し送技術:SSE
結び目
この文章を書くのは主にSpingのよくある知識点を守るためで、後続のSpringBootの展開のために基礎を作ります.
太めのスタイル
SpringBoot自体はSpring開発方式を簡素化した新しい技術を追加していません.
Springの出現自体はJavaEEの開発を簡略化するためである.
しかしSpringシステムが大きくなるにつれてSpring自体も様々な配置に引っ張られ、Spring開発はJavaの半分xmlという戯れがあります.
Spring BootはSpring 4を利用して提供し始めた条件注釈で、Springプロジェクトの開発を大いに簡略化しました.
今の開発者は幸せです.言語からツールチェーンまで、そして今のネット環境と学習環境は勉強したいなら、収穫があります.
本文はSpringとSprigMVCの核心機能を整理して、基礎概念に対して説明しません.Springを勉強する前に、小さい仲間はSpringに対してある程度知っている必要があると提案します.
Springコア
Springフレーム設計原則
Springの出現はJavaEEの開発を簡略化するために設計過程でいくつかの基礎原則を遵守しています.
名詞の解釈
new
キーワードを使ってオブジェクトを作成することができます.もちろん、工場モードを通じて対象を取得することもあります.いずれにしても、この対象は私達自身
が来たのです.Springでは、コンポーネントを作成してからSpringに管理し、必要なところで
という音がしたら、Springが対象の初期化を担当します.オブジェクトを元の自分で作成し、Springで管理するプロセスに変更します.これはコントロール反転です.
Springは私達の説明により、適切な対象を私達に渡して使用します.これは注入に依存しています.
コアコメント
制御反転と依存注入の間に、いくつかの注釈を使用します.
声明Bean:@Component、@Service、@Repository、@Controller
注入ビーム:@Autowired、@Inject、@Resource
@Configration:現在のクラスは構成クラスであると宣言します.
@ComponentScan:ビーンをスキャンし、スキャンされたビーンを初期化してSpring容器に入れて管理します.
面に向かってプログラミングする
プロセスとオブジェクト指向は、私たちがよく知っている2つのプログラミングモデルです.
面に向かうのも同じで、プログラミングの手本でもあります.
それは他のプログラミングの範式に対する転覆ではなくて、ただ1つの役に立つ補充です.適切な適用シーンがあります.
例えば、特定の方法の呼び出し前と呼び出し後、呼び出しの方法パラメータと戻り値を承諾したいです.この時はAOPを使うととても便利です.そうでなければ、私たちは手動でメソッド内部でログの印刷を行う必要があります.
SpEL式
@Value(" ")
private String str;
@Value("#systemProperties['os.name']")
private String osName;
@Value("#{T(java.lang.Math).random()*100.0}")
private double randomNumber;
@Value("#{demoService.property}")
@Value("classpath:com/ist/a.txt")
private Resource resource;
@Value("http://www.baidu.com")
private Resource resource;
@Value("${book.name}")
private String st;
@Autowired
private Environment env;
現在のクラスで使用されているプロファイルをenvに注入し、env.getProperty("book.name)")
を呼び出して、データを取得することができます.ビーンのライフサイクル
ビーンの初期化と廃棄の時には何かをする必要があります.
<dependency>
<groupId>javax.annotationgroupId>
<artifactId>jsr250-apiartifactId>
<version>1.0version>
dependency>
基本的にはinitMethodとdestoryMethodを使えばいいです.非同期法
マルチスレッドを使用して、方法の非同期呼び出しを実現します.
1、スレッド池を配置する
package cfg.spring;
import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.AsyncConfigurer;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.concurrent.Executor;
/**
* Created by nbcoolkid on 2017-05-20.
*/
@Configuration
@EnableAsync
public class TaskExecConf implements AsyncConfigurer{
@Override
public Executor getAsyncExecutor() {
ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
threadPoolTaskExecutor.setCorePoolSize(5);
threadPoolTaskExecutor.setMaxPoolSize(10);
threadPoolTaskExecutor.setQueueCapacity(25);
threadPoolTaskExecutor.initialize();
return threadPoolTaskExecutor;
}
@Override
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
return null;
}
}
2、配置クラスで@EnbleAsyncを使って非同期タスクへのサポートを開始するBeanを実行する中で@Asyncを使ってコメントします.これは非同期のタスクです.クラスに表示されている場合、このクラスのすべての方法は非同期です.
タイム?タスク
いくつかの簡単なタイムミッションに対して、Springも自分の実現があります.
使用方法:
1、配置類に@EnbleSchedulingを使ってサポートを開始する
2、任務方法に@Scheduledを使用し、core表現で時間を設定する
package org.zln.spb.task;
import org.springframework.scheduling.annotation.Scheduled;
import org.zln.spb.ann.Task;
/**
* Created by nbcoolkid on 2017-10-17.
*/
@Task
public class Demo01Task {
@Scheduled(cron = "0/5 * * * * ? ")
public void showH() {
System.out.println(" ---");
}
}
ここの@Taskコメントはカスタムコメントです.package org.zln.spb.ann;
import org.springframework.stereotype.Component;
import java.lang.annotation.*;
/**
* Created by nbcoolkid on 2017-10-17.
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Task {
String value() default "";
}
package org.zln.spb.task;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
/**
* Created by nbcoolkid on 2017-10-17.
*/
@Configuration
@EnableScheduling
@ComponentScan
public class TaskConfig {
}
package org.zln.spb.task;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
/**
* Created by nbcoolkid on 2017-10-17.
*/
public class Main {
public static void main(String[] args) throws InterruptedException {
AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(TaskConfig.class);
Thread.sleep(1000 * 3600);
}
}
結び目Springの内容はもちろんこれだけではありませんが、SpringBootでは一部の内容が深く説明されています.
SpringMVCコア
MVCモード思想
MVCモードではないバックエンドコードを作成した場合、直接にサービスロジックを利用して実行します.
MVCのバックエンド開発に対する大きなメリットを深く感じられます.
MVCとは、バックエンド処理コンポーネントをモデル、ビュー、コントローラに区分し、各コンポーネントに独自の機能シーンがあり、コード上で階層化したものです.論理をはっきりさせる
@Controller Advice
コントローラの強化は、一般的にコントローラの全体構成に使用されます.
私がよく使う機能の一つは@Controller Adviceを使って全体の異常を捉えることです.
ファイルアップロード
すべてのMVCフレームはファイルアップロードに言及します.
Spring Bootの中にもっと簡潔な方法がありますので、ここでは言いません.
Http Message Coverter
サービス先押し送技術:SSE
結び目
この文章を書くのは主にSpingのよくある知識点を守るためで、後続のSpringBootの展開のために基礎を作ります.
太めのスタイル