Spring Bootファースト入門

9228 ワード

1概要
Spring BootはSprigMVCのアップグレードであり、Spring Cloudの基礎部分を勉強します.
Spring Bootの特徴は以下の通りです.
  • は繁雑を簡略化し、構成を簡略化する.(構成が簡単です.謝sql文を使わないでください.配置ファイルとエンティティ類を利用して自動的にデータテーブルを作成できます.)
  • が注目されているのは、次世代の枠組みである.
  • マイクロサービスの入門レベルのマイクロフレーム.
  • Spring Boot知識の基礎を学ぶ:
  •  maven
  • Spring注釈
  • Restful API  
  • 2プロジェクトの属性設定
    2.1共通属性の配置
    プロジェクト属性の設定は、appication.propertiesまたはappication.yml(推奨)で行います.
    appication.propertiesで構成する:server.port=8081 server.context-path server.context-path=/sellappication.ymlで設定します.
    server: port: 8082 
    context-path: /sell
    : ; application.yml , 。2.2カスタム属性
    server: port: 8082 context-path: /sell high: 1.75 age: 25
    , , , ; , 。
    @RestController
    public class HelloController {
        @Value("${high}")
        private String high;
        @Value("${age}")
        private Integer age;
        @RequestMapping(value = "hello", method = RequestMethod.GET)
        public String say() {
            return "Hello Spring Boot";
        }
        @RequestMapping(value = "info", method = RequestMethod.GET)
        public String say2() {
            String str = "???" + high + "
    ;???" + age; return str; } }
           
     content:「high:$high」、「{age}」  , :
    @Component //    Bean
    @ConfigurationProperties(prefix = "sell")
    public class SellProperties
    {
        @Value("${high}")
        private Stringhigh;
    
        @Value("${age}")
        private Integerage;
    
        @Value("${content}")
        private Stringcontent;
    
        public SellProperties(){
        }
    //……
    }
    2.3多環境構成  , , application.yml , :application.yml application-dev.yml
    application.yml
    spring:
      profiles:
        active: dev
    プロファイルの設定-dev.yml
    2.4 Controllerの使用
    1
  • @Controllerはhttp要求を処理するために用いられ、テンプレートに協力して
  • を使用する.
  • @Rest Controller:Spring 4の後に新たに加えたコンポーネントは、もともとJsonに戻るには@ResonseBody+@Controller
  • が必要です.
  • @Request Mapping:構成URLマッピング
  • 2
  • @PahttVarable:urlのデータを取得する
  • @Request Param:要求パラメータの値を取得する
  • @GetMapping:コンビネーションコメント 
  • /**
     * @RestController=@Controller+@ResponseBody
     */
    //@Controller
    //@ResponseBody()
    @RestController
    //@RequestMapping("/temp") //    Url               :http://127.0.0.1:8081/sell/temp/hello
    public class HelloController {
       @Value("${high}")
        private Stringhigh;
    
        @Value("${age}")
        private Integerage;
    
        @Value("${content}")
        private Stringcontent;
    
        @Autowired
        private SellPropertiessellProperties;
    
        @RequestMapping(value="hello",method = RequestMethod.GET )
        public Stringsay(){
            return "HelloSpring Boot";
        }
    
        /**
         *   url          ,       url    
         * @return
         */
       @RequestMapping(value={"info","private"},method = RequestMethod.GET )
        public Stringsay2(){
            String str ="  :"+high+"
    ; :"+age; // return str; return content; } @RequestMapping(value="assem",method = RequestMethod.GET ) public Stringsay3(){ return sellProperties.getContent(); } @RequestMapping(value="template",method = RequestMethod.GET ) public Stringsay4(){ return "index"; } /* @PathVariable(value ="id" ,required = false,defalutValue="0" ,required=false , 0 */ @RequestMapping(value="/pathV/{id}",method = RequestMethod.GET ) // @GetMapping(value) public Stringsay4(@PathVariable(value = "id",required = false,defalutValue="0") Integer id){ return "id"+id; } }
    3データベース操作
    3.1 Spring-Data-Jpa
    Spring BootオペレーティングデータベースはSpring-Data_を使用する必要があります.J pa
    Spring-Data-Jpa(Java Persistence API)は一連のオブジェクトの持続化の基準を定義していますが、現在この規格を実現している製品はハイベルナー、TopLinkなどがあります.
    3.2操作データベース
    1テーブルの自動作成
    1)Retsfulインターフェースを設計する
    2)設定:pom.xmlファイル
    
    
       org.springframework.boot
       spring-boot-starter-data-jpa
    
    
       mysql
       mysql-connector-java
    
    appication.ymlファイルにリンクデータベースの属性を設定します.必ずフォーマットをそろえてください.でないとエラーが発生します.
    #        ,              ,                  
    spring: 
      profiles: 
        active: dev 
      datasource: 
        driver-class-name: com.mysql.jdbc.Driver 
        url: jdbc:mysql://127.0.0.1:3306/girl 
        username: root 
        password: root 
      jpa: 
        hibernate: 
          ddl-auto: create
        show-sql: true 
    #create:               ,        ,     ,            
    #ddl-auto: update               ,            ,    
    #ddl-auto: create-drop     ,         。 
    3)データベースガールを作成し、テーブルを作成する必要はなく、対応するクラスを作成する必要があります.
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    
    @Entity
    public class Girl {
        @Id
        @GeneratedValue
       
        @GeneratedValue
        private Integerid;
        private StringcupSize;
        private Integerage;
    
        public Girl(){
        }
    
        //……get and set
    }
    4)その後、プロジェクト「run’プロジェクト名」を実行すると、自動的にエンティティクラスのガールに対応するテーブルが作成されます.
    2自動クエリー
    1)  設定ファイルのaplication.ymlにおけるデータベースの属性設定を変更します.ddl-aut:udateは、データベース操作を実行する時にデータベースのデータを保持できます.
    2)  インターフェースを作成して、プロキシとしてデータベースに自動的にアクセスできます.
    import org.springframework.data.jpa.repository.JpaRepository;
    import java.util.List;
    /**
     *            ,   Girl,  id   Integer
     */
    public interface GirlRepository extends JpaRepository{
    
        //      ,  DDL,       
        public List findByAge(Integer age);
    }
    3)            GirlController,                GirlRepository:
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;
    
    @RestController
    public class GirlController {
    
        @Autowired
        private GirlRepositorygirlRepository;
        @GetMapping(value="/girls")
        public ListgirlList(){
    
            return girlRepository.findAll();//                   
        }
    
        /**
         *       
         * @param cupSize
         * @param age
         * @return
         */
       //@PostMapping(value="/postGirls")
       //@RequestMapping(value="/getGirl_1",params ={"cupSize","age"},method=RequestMethod.GET)
        @RequestMapping(value="/getGirl_1/{cupSize}/{age}",method=RequestMethod.GET)
        public GirlgirlAdd(@PathVariable("cupSize") String cupSize,
                            @PathVariable("age") Integer age)
        {
            Girl girl=new Girl();
            girl.setAge(age);
            girl.setCupSize(cupSize);
            return girlRepository .save(girl);//save        
        }
        @PostMapping(value="/postGirl_2")
        public GirlgirlAdd2(@RequestParam("cupSize") String cupSize,
                            @RequestParam("age") Integer age)
        {
            Girl girl=new Girl();
            girl.setAge(age);
            girl.setCupSize(cupSize);
            return girlRepository .save(girl);//save        
        }
        //  
        @GetMapping(value="/girls/find/{id}")
        public GirlgirlFindOne(@PathVariable Integer id)
        {
            return girlRepository.findOne(id);
        }
        //  
        @PutMapping(value="/girls/update/{id}")
        public GirlgirlUpdate(@PathVariable Integer id,
                               @RequestParam("cupSize") String cupSize,
                               @RequestParam("age") Integer age)
        {
            Girl girl=new Girl();
            girl.setId(id);
            girl.setAge(age);
            girl.setCupSize(cupSize);
            return girlRepository.save(girl);
        }
        //  
        @GetMapping(value="/girls/delete/{id}")
        public void girlDeleteOne(@PathVariable Integer id)
        {
            girlRepository.delete(id); //     
        }
    
        //        ,              ,            。
        @GetMapping(value="/girls/age/{age}")
        public ListgirlListByAge(@PathVariable("age") Integer age)
        {
            return girlRepository.findByAge(age);
        }
    }
     
    コントローラでは、インターフェースを起動してデータベースに対する操作方法を実現しても良いし、インターフェースで照会方法を修正してからコントローラでこの方法を呼び出すこともできます.つまり、SQL文を書く必要はありません.
     
    4事務管理
    いくつかの操作を一つの原子的行為として結びつけるか、または同時に成功するか、どちらも失敗する.
    サービスGirl Service.javaを作成し、操作方法を事務管理として注釈することに注意する.
    @Service
    public class GirlService {
        @Autowired
        private GirlRepository girlRepository;
    
        @Transactional //     --                 ,      ,      
        public void insertTwo()
        {
            Girl girlA=new Girl();
            girlA.setAge(23);
            girlA.setCupSize("C");
            girlRepository.save(girlA);
    
    
            Girl girlB=new Girl();
            girlB.setAge(20);
            girlB.setCupSize("D");
            girlRepository.save(girlB);
        }
    }