SpringBoot/関連技術情報
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
[[SpringBoot]]
* Spring Boot開発で使っている技術や名称 [#i3e71d71]
Spring Boot特有の技術ではないが,Spring Bootを利用し開発...
** Gradle [#p3dacf76]
- ビルドツールの1つで.jarとか.war(webサーバで動作する)を...
- 設定ファイルはjavaベースの記述が可能で,可読性や自由度...
- mavenとの比較
-- mavenは設定ファイルを記述してコンパイル,gradleはjava...
--- gradleの方が記述の自由度が高く,コンパイルエラー文が...
- mavenで出来ることをよりスマートにする
** アノテーション [#p11ef704]
- 日本語では「注釈」という意味
- 「@hogehoge」と記述し,特定の機能を実装することができる
-- @Overrideとか
** Lomboc [#haefb8f2]
- Java特有の冗長なコード(getter,setter,toStringなど)を完...
- アノテーションを記述する
-- フィールドの追加,変更をしても,getterなどを書き直す必...
- 例
-- before
public class Member {
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString() {
return "Member [id=" + id + "]";
}
}
-- after
import lombok.Data;
@Data
public class Member {
private int id;
}
** DI [#v6df0553]
- [[https://qiita.com/park-jh/items/4df5c67d895b2ea219d6]...
- Dependeny Injectionの略称,「オブジェクトの注入」と解釈...
- 依存していることを外部で定義し,依存関係を使えるように...
-- 依存:メソッド内で別クラスのインスタンスを持つ
public static void main(String[] args){
MessageBean bean = new MessageBean();//メソッド内...
}
-- 関連:あるクラスの属性に別のクラスが存在する
public class HelloApp {
MessageBean bean;
public HelloApp(){
this.bean = new MessageBean();//フィールドでn...
}
}
-- 依存は関連より弱い関係
- あるべき実装
public class HelloApp {
MessageBean bean;
public HelloApp(Message bean){
this.bean = bean; //newする際に,外からbeanを...
}
}
- interfaceを使ったクラス設計も,依存性か解決の手法の1つ
public interface MessageBean {
public void sayHello(String name);//抽象メソッドを定義
}
-
public class MessageBeanJa implements MessageBean {
public void sayHello(String name){//抽象メソッドを実...
System.out.println("こんにちは、" + name);
}
}
- 依存性が高いと?
-- クラスBが完成していないと,クラスAが使えない
-- 単体テスト(クラス単位でのテスト)を行うことができないた...
-- 元のクラスBを変更するとクラスAも変更が必要
- メリット
-- 依存関係をクラス外で定義することで,その依存性をなくす...
-- クラスからnew演算子を消せる
--- メモリ関連で良い,らしい
-- シングルトン,プロトタイプ(呼び出されるごとに生成),セ...
- 使い方
-- フィールド変数(注入先の変数)の前に@Autowiredをつける
-- @Component(または@Controller, @Service, @Repositoryな...
@Service //抽象化したいクラスに付けるとDIオブジェクトと...
public class ProductService {
(略)
}
--
public class ProductController {
@Autowired //フィールドの前に付ける
private ProductService productService;//勝手にnewし...
(productServiceを使ったメソッドなど)
}
** DIコンテナ [#a010aaab]
- DIを実現するためのフレームワーク
- https://qiita.com/hinom77/items/1d7a30ba5444454a21a8
- DIオブジェクト(コンポーネント)の集合
-- ApplicationContextインターフェースを通じて,DIコンテナ...
** Bean [#k689c09c]
- DIコンテナに登録するコンポーネントのことをSpringではBea...
-- https://dev.classmethod.jp/articles/springboot-what-is...
- 理解としては以下の通り
@Beanと書いたメソッドでインスタンス化されたクラスがシン...
任意のクラスで@Autowiredで注入してアクセスできる。
- Beanはメソッドをどこでも使えるように,DI(@Component,@Se...
- 使い方
- @Configurationと記述したクラス内のメソッドに@Beanを記述...
- 任意のフィールドに対して@AutoWiredを記述することで,そ...
- 元となるクラス
public class Counter {
private int count;
public int getCount(){
return count++;
}
}
- Beanを定義するクラス
@Configuration //Bean用の設定
public class CreateCounter {
@Bean //Beanを定義
public Counter getCounter(){
return new Counter();//シングルトンなCounterクラスが生...
}
}
- Beanを利用するクラス
public class Process{
@Autowired//これを付与すると,コンストラクタを省略してD...
Counter counter;
public void printCounts(){
System.out.println(counter.getCount());
}
}
- SpringBootでは,上で挙げた@Component系(@Component, @Co...
@Service
public class AccountService {
private AccountRepository accountRepository;
private PasswordEncoder passwordEncoder;
public AccountService(AccountRepository accountReposito...
this.accountRepository = accountRepository;//別所で定...
this.passwordEncoder = passwordEncoder;
}
}
-- @Component系は各クラスが持つ機能とBeanが固く結びつくの...
--- AOP的な考え方
-- 外部クラスを注入したい場合など,そのクラスを直接いじっ...
--- Pitcoinの例だとBCryptPasswordEncoderがそう.PasswordC...
終了行:
[[SpringBoot]]
* Spring Boot開発で使っている技術や名称 [#i3e71d71]
Spring Boot特有の技術ではないが,Spring Bootを利用し開発...
** Gradle [#p3dacf76]
- ビルドツールの1つで.jarとか.war(webサーバで動作する)を...
- 設定ファイルはjavaベースの記述が可能で,可読性や自由度...
- mavenとの比較
-- mavenは設定ファイルを記述してコンパイル,gradleはjava...
--- gradleの方が記述の自由度が高く,コンパイルエラー文が...
- mavenで出来ることをよりスマートにする
** アノテーション [#p11ef704]
- 日本語では「注釈」という意味
- 「@hogehoge」と記述し,特定の機能を実装することができる
-- @Overrideとか
** Lomboc [#haefb8f2]
- Java特有の冗長なコード(getter,setter,toStringなど)を完...
- アノテーションを記述する
-- フィールドの追加,変更をしても,getterなどを書き直す必...
- 例
-- before
public class Member {
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString() {
return "Member [id=" + id + "]";
}
}
-- after
import lombok.Data;
@Data
public class Member {
private int id;
}
** DI [#v6df0553]
- [[https://qiita.com/park-jh/items/4df5c67d895b2ea219d6]...
- Dependeny Injectionの略称,「オブジェクトの注入」と解釈...
- 依存していることを外部で定義し,依存関係を使えるように...
-- 依存:メソッド内で別クラスのインスタンスを持つ
public static void main(String[] args){
MessageBean bean = new MessageBean();//メソッド内...
}
-- 関連:あるクラスの属性に別のクラスが存在する
public class HelloApp {
MessageBean bean;
public HelloApp(){
this.bean = new MessageBean();//フィールドでn...
}
}
-- 依存は関連より弱い関係
- あるべき実装
public class HelloApp {
MessageBean bean;
public HelloApp(Message bean){
this.bean = bean; //newする際に,外からbeanを...
}
}
- interfaceを使ったクラス設計も,依存性か解決の手法の1つ
public interface MessageBean {
public void sayHello(String name);//抽象メソッドを定義
}
-
public class MessageBeanJa implements MessageBean {
public void sayHello(String name){//抽象メソッドを実...
System.out.println("こんにちは、" + name);
}
}
- 依存性が高いと?
-- クラスBが完成していないと,クラスAが使えない
-- 単体テスト(クラス単位でのテスト)を行うことができないた...
-- 元のクラスBを変更するとクラスAも変更が必要
- メリット
-- 依存関係をクラス外で定義することで,その依存性をなくす...
-- クラスからnew演算子を消せる
--- メモリ関連で良い,らしい
-- シングルトン,プロトタイプ(呼び出されるごとに生成),セ...
- 使い方
-- フィールド変数(注入先の変数)の前に@Autowiredをつける
-- @Component(または@Controller, @Service, @Repositoryな...
@Service //抽象化したいクラスに付けるとDIオブジェクトと...
public class ProductService {
(略)
}
--
public class ProductController {
@Autowired //フィールドの前に付ける
private ProductService productService;//勝手にnewし...
(productServiceを使ったメソッドなど)
}
** DIコンテナ [#a010aaab]
- DIを実現するためのフレームワーク
- https://qiita.com/hinom77/items/1d7a30ba5444454a21a8
- DIオブジェクト(コンポーネント)の集合
-- ApplicationContextインターフェースを通じて,DIコンテナ...
** Bean [#k689c09c]
- DIコンテナに登録するコンポーネントのことをSpringではBea...
-- https://dev.classmethod.jp/articles/springboot-what-is...
- 理解としては以下の通り
@Beanと書いたメソッドでインスタンス化されたクラスがシン...
任意のクラスで@Autowiredで注入してアクセスできる。
- Beanはメソッドをどこでも使えるように,DI(@Component,@Se...
- 使い方
- @Configurationと記述したクラス内のメソッドに@Beanを記述...
- 任意のフィールドに対して@AutoWiredを記述することで,そ...
- 元となるクラス
public class Counter {
private int count;
public int getCount(){
return count++;
}
}
- Beanを定義するクラス
@Configuration //Bean用の設定
public class CreateCounter {
@Bean //Beanを定義
public Counter getCounter(){
return new Counter();//シングルトンなCounterクラスが生...
}
}
- Beanを利用するクラス
public class Process{
@Autowired//これを付与すると,コンストラクタを省略してD...
Counter counter;
public void printCounts(){
System.out.println(counter.getCount());
}
}
- SpringBootでは,上で挙げた@Component系(@Component, @Co...
@Service
public class AccountService {
private AccountRepository accountRepository;
private PasswordEncoder passwordEncoder;
public AccountService(AccountRepository accountReposito...
this.accountRepository = accountRepository;//別所で定...
this.passwordEncoder = passwordEncoder;
}
}
-- @Component系は各クラスが持つ機能とBeanが固く結びつくの...
--- AOP的な考え方
-- 外部クラスを注入したい場合など,そのクラスを直接いじっ...
--- Pitcoinの例だとBCryptPasswordEncoderがそう.PasswordC...
ページ名: