Springboot - это обновление до SpringMVC, которое проще для кодирования, конфигурации, развертывания и мониторинга.
Микросервисы
MicroServices - это новая архитектура программного обеспечения, которая разрывает большое одно приложение и услугу на десятки поддерживаемых микросервисов. Стратегия микросервиса может облегчить работу, что может масштабировать один компонент вместо всего стека приложений, что соответствует протоколам на уровне обслуживания.
Spring обеспечивает полный набор компонентов для микросервисов - Springclound, а Spirngboot является основой.
Первая программа Springboot
Используемое здесь программное обеспечение для разработки - это Intellij Idea, которая не сильно отличается от Eclipse, с более холодным интерфейсом и более мощными функциями; Android Studio разработана на основе Intellij. Я раньше использовал Android Studio, и интерфейсы их обоих почти одинаковы.
INTELLIJ IDEA Официальный веб -сайт: http://www.jetbrains.com/idea/
После настройки Maven, Tomcat, JDK, вы можете его использовать
Образ Alibaba Cloud Центрального склада, настроенный Maven, скорость загрузки пакетов JAR на этом адресе, кто знает, кто его использует!
настройка.xml
.. <зеркала> <Irror> <id> alimaven </id> <mame> aliyun maven </name> <url> http://maven.aliyun.com/nexus/content/groups/public/ </url> <mirrorof> central </mirrorof> </mirror>. Полем
Создать проекты Springboot с идеей
Версия моей идеи: Intellij Idea 2016.3.1
Структура проекта:
Файл Maven Pom.xml по умолчанию для проекта
Pom.xml
<? xml version = "1.0" Encoding = "utf-8"?> <project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <doliderversion> 4.0.0 </modelversion> <groupid> com.jxast </GroupId> <artifactid> spirngbootdemo </artifactid> <sersion> 0.0.1-snapshot </version> <duckaging> jar </packaging> <mame> spirngbootdemo </name> <distaging> Demo Project для Spring Boot> <parent> <groupid> org.spramework.boot </Groupid> <ratfactid> Spring-Boot-Starter-parent </artifactid> <sersion> 1.4.2.2.release </version> <venterativePath/> <!-Поиск родителей от репозитория-> </parent> <properties> <project.build.sourceencoding> utf-8 </project.build.sourceencoding> <project.reporting.outputencoding> UTF-8 </Project.Report.OutputEncoding> <java.version> 1.8 </java.version> </свойства> <Depertiencies> <dependency> <groupid> org.springframework.boot </Groupid> <ArtifactId> Spring-boot-starter-web-web <groupId> org.springframework.boot </GroupId> <ArtifactId> Spring-boot-starter-test </artifactid> <crappope> тест </scope> </dependency> </depertive> <broad> <blicins> <groupid> org.springframe.boot </GroupD> <ratifactid> prings-plugin-plugin. </плагины> </build> </project>
Запустите основной метод SpirngbootdemoApplication, и вы можете начать работу.
Для других методов запуска, см. Видеоролик http://www.imooc.com/learn/767/
Вывод консоли:
"C:/Program Files/java/jdk1.8.0_91/bin/java" .... ____ __ __ //// ___'_ __ __ __ _ (_) _ ___ __ / / / / / / (() / ___ | '_ |' _ | | / / / / / / / / / / / / / / | | | | | | | | | | | | | | | | | | | | |)))) '| ____ | .__ || | _ | | _ | | _/__, | / / / / / ========================================================================================== Startup2016-12-16 14: 56: 52.215 Info 15872 --- [Main] sbcettomcatembeddedservletcontainer: Tomcat начал в порту (S): 8080 (http) 2016-12-16 14: 56: 52.255 Info 15872- Порт (S): 8080 (http) 2016-12-16 14: 56: 52,255 Информация 15872 --- [Main] SbcettomCatembeddedServletContainer: Tomcat начал на порту (S): 8080 (http) 2016-12-16 14: 56: 52,255 Info 15872 --- : Tomcat начался в порту (S): 8080 (http) 2016-12-16 14: 56: 52,255 Информация 15872 --- [Main] com.jxust.spirngbootdemoapplication: начал Spirgbootdemoapplication в 7,795 секунды (JVM-бег на 9.177)
Отсюда вы можете увидеть номер порта Tomcat. Поскольку не существует пользовательского контроллера, пока нет представления. Давайте создадим представление, которое выводит Hello Springboot!.
Создать HelloController, расположенный под пакетом контроллера
Hellocontroller.java
пакет com.jxust.controller; import org.springframework.web.bindtation.getMaping; import org.springframework.web.bind.annotation.restcontroller;/** * Создано Peng * Время: 2016/12/16 15:45 */@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RestController @Requestmapping ("/hello") public String Specing () {return "hello springboot!"; }}@RestController Новая аннотация после весны4. Оказывается, что возврата JSON требует, чтобы @Responsebody сотрудничал с @Controller. Теперь один из двух лучших
Введите http: // localhost: 8080/hello в браузере, чтобы вывести предложение Hello Springboot!
Пользовательская конфигурация свойства
Используется файл Application.Properties
Настройте номер порта и префикс доступа
Application.propertiesserver.port = 8081server.context-path =/springboot
В дополнение к использованию файлов формата .properties, вы также можете использовать файлы конфигурации. Myml (рекомендуется), что проще
Application.yml
Удалить исходный файл Application.properties
Обратите внимание на формат, пробелы не могут отсутствовать
Получить значение атрибута в файле конфигурации
Мы также можем настроить данные в файле конфигурации и получить их в контроллере, например:
Application.yml
Сервер: Порт: 8081 Контекст-Пэт: /SpringbootName: Xiaopang
HelloController получает значение в файле конфигурации
Hellocontroller.java
.... @RestControllerPublic Class HelloController {@Value ("$ {name}") частное имя строки; @Requestmapping (value = "/hello", method = requestMethod.get) public String Shower () {return name; }} Возвращаемое значение имени
Методы конфигурации диверсификации значения в файлах конфигурации
Значения файла конфигурации могут быть несколькими или комбинированными, например:
Application.yml
Имя: Xiaopang Возраст: 22 или имя: Xiaopang Возраст: 22content: «Имя: $ {name}, возраст: $ {Age}» или сервер: порт: 8081 context-path: /springbootperson: имя: Xiaopang Age: 22Первые две конфигурации являются одинаковым способом получить значения, но для этого метода человек обладает двумя соответствующими свойствами, которые необходимо обрабатывать таким образом.
PersonProperties.java
пакет com.jxust; import org.springframework.boot.context.properties.configurationProperties; Import org.springframework.stereotyle.component;/** * Создан Peng * Time: 2016/12/16 16:34 */@component@configurationperties (prefix = "personpropert stricerpes {prefix =" personproperties; частный целый возраст; public String getName () {return name; } public void setName (string name) {this.name = name; } public integer getage () {return Age; } public void setage (целый возраст) {this.age = age; }}ALT+вставьте подсказки для ключа
Pom.xml должен добавить следующие зависимости для обработки предупреждений
<Depective> <groupId> org.springframework.boot </GroupId> <ArtifactId> pring-boot-configuration-processor </artifactid> <plociate> true </opportal> </vehyse>
Hellocontroller.java
пакет com.jxust.controller; import com.jxust.personproperties; import org.springframework.beans.factory.annotation.autowired; импорт org.springframework.web.bindation.Requestmapping; импорт org.spramework.web.bindtation.Requestmath; org.springframework.web.bind.annotation.restcontroller;/** * Создано Peng * Time: 2016/12/15 20:55 */ @ @RestControllerPublic Class HelloController {@Autowired Private PersonPerties PersonPerties; @Requestmapping (value = "/hello", method = requestMethod.get) public String Shower () {return personProperties.getName ()+PersonProperties.getage (); }}О приложении файла конфигурации. Miml Несколько наборов конфигураций
Подобно интернационализации файлов IL8N, i18n_en_us.properties и i18n_zh_cn.properties
Это может решить смущение частых модификаций конфигурации
Это зависит от файла конфигурации Application.yml, чтобы решить, какой файл конфигурации использовать.
Application.yml
Весна: Профили: Активные:
Application-A.yml
Сервер: Порт: 8081 Контекст-Парт: /Springbootperson: Имя: Xiaoleaire: 21
Application-b.yml
Сервер: Порт: 8081 Контекст-Плат: /Springbootperson: Имя: Xiaopang Возраст: 22
Springboot добавляет, удаляет и изменения для проверки примеров
Полная структура проекта
Использование контроллера
Использование контроллера
@Controller Chu обращается с http -запросом
@RestController Новая аннотация после Spring4, выясняется, что возвращение JSON требует, чтобы @Responsebody сотрудничал с @Controller
@Requestmapping Настройка картирования URL -адреса
Запросы на стиль отдыха
Для аннотаций по методам в контроллере
@Requestmapping (value = "/hello", method = requestMethod.get) @RequestMaping (value = "/hello", method = requestMethod.post) @requestmapping (value = "/hello", method = requestmethod.delete) @requestmapping (value = "/hello", methodmethod.put)
Springboot упрощает вышеуказанную аннотацию
@GetMaping (value = "/Girls") @postmapping (value = "/Girls") @putmapping (value = "/Girls/{id}") @deletemapping (value = "/hirls/{id}")Браузер должен отправлять запросы по-разному, и вы можете установить плагин Httprequester, а браузер Firefox может напрямую искать этот компонент для установки.
Spring-Data-JPA
JPA Полное имя Java Persistence api.jpa описывает отношения отображения таблицы об объектно-обращении через аннотацию JDK 5.0 или XML, и сохраняет управляющие объекты в базе данных.
Hibernate3.2+, Toplink 10.1.3 и OpenJPA все обеспечивают реализацию JPA.
Создайте базу данных MySQL с помощью JPA
Pom.xml добавляет JPA и MySQL -зависимости
<dependency> <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-data-jpa </artifactid> </depervice> <dehyederiation> <groupid> mysql </GroupId> <strifactid> mysql-connector-java </artifactid> </ytelecty> </artifactid> mysql-connector </artifactid>
Настройка JPA и базы данных
Application.yml
Весна: Профили: Active: A DataSource: Driver-Class-Name: com.mysql.jdbc.driver url: jdbc: mysql: //127.0.0.1: 3306/db_person
Формат важен
Вам нужно создать базу данных DB_PERN вручную
Создайте класс сущности человека, соответствующий таблице данных
Человек. Ява
пакет com.jxust.entity; импорт javax.persistence.entity; import javax.persistence.generatedValue; импорт javax.persistence.id;/** * Создан Peng * Time: 2016/12/16 17:56 */ @intityPublic Class Person {@Id @GenerTEDVALUE Private Integer ID; Приватное название строки; частный целый возраст; // конструктор должен быть public () {} public integer getId () {return id; } public void setId (Integer id) {this.id = id; } public String getName () {return name; } public void setName (string name) {this.name = name; } public integer getage () {return Age; } public void setage (целый возраст) {this.age = age; }}После запуска проекта проверьте базу данных, и табличный человек будет создан автоматически
MySQL> Использовать db_person; Database medicemysql> desc person;+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Null | |+------------------------+---------+----------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Далее вы можете добавить, удалять, изменять и проверить таблицу человека
Создать контроллер PersonController.java
Сначала создайте интерфейс PersonRepository, расположенный под пакетом DAO. PersonController вызывает метод, унаследованный от JparePository для достижения взаимодействия с базой данных.
Функция этого интерфейса PersonRepository аналогична функции интерфейса слоя DAO в структуре SSM; В структуре SSM уровень службы косвенно выполняет соответствующие операторы SQL в файле отображения базы данных MyBatis (.xml) через этот интерфейс и выполняет операции добавления, удаления, изменения и поиска базы данных. (Mapper автоматически реализует интерфейс DAO)
PersonRepository.java
Пакет com.jxust.dao; import com.jxust.entity.person; import org.springframework.data.jpa.repository.jparepository;/** * Создано Peng * Время: 2016/12/16 18:07 */public interface personrepositor
Personcontroller.java
пакет com.jxust.controller; import com.jxust.dao.personrepository; import com.jxust.entity.person; import org.springframework.beans.factory.annotation.autowired; импорт org.springframework.web.bindation.getmation; org.springframework.web.bind.annotation.restcontroller; import java.util.list;/** * Создано Peng * Время: 2016/12/16 18:04 */ @RestControllerPublic Class PersonController {@autowired PersonRepository PersonRepository; @Getmapping (value = "/person") частный список <person> personlist () {return personrepository.findall (); }}Добавьте две части данных в базу данных
mysql> выберите * от человека;+---+-----+------+| id | возраст | Имя |+----+-------+-------+| 1 | 23 | Шарлотта || 2 | 21 | Ma Dongmei |+----+-------+------+2 ряда в наборе (0,04 с)
Запустите запрос на выполнение проекта http: // localhost: 8081/springboot/человек
Операторы SQL выводятся консоли:
Hibernate: выберите Person0_id As ID1_0_, Person0_.age as age2_0_, person0_.name As name3_0_ от человека Person0_
Другие методы добавления, удаления, модификации и проверки
Personcontroller.java
..../** * Добавить человека * * @param name * @param age * @return */@postmapping (value = "/person") public persondd (@requestparam ("name") String name, @requestparam ("Age") целое возраст) {Person Person = New Person (); Person.setName (имя); Человек.setage (возраст); return personrepository.save (человек); }/** * Запрос человека * * @param id * @return */@getmapping (value = "/person/{id}") public personfindone (@pathvariable ("id") integer id) {return personrepository.findone (id); }/** * Удалить человека * * @param id */@deletemapping (value = "/person/{id}") public void persondelete (@pathvariable ("id") ID) {personrepository.delete (id); }/** * Обновите человека * * @param id * @param name * @param age * @return */@putmapping (value = "/person/{id}") public personupdate (@pathvariable ("id") integer id, @requestparam ("name") String name, @RequestParam ("Age") inte aGeger) {neal Person ("nember wome) {new Person ("); Person.setid (id); Person.setName (имя); Человек.setage (возраст); return personrepository.save (человек); }Соответствующий метод запроса:
Запросите пользователя:
Добавить пользователя
Удалить пользователя (без возврата значения)
Обновите пользователя
Итак, могу ли я проверить на основе возраста? Ответ в том, что это еще невозможно
Из утверждений консоли можно видеть, что операторы SQL запрашиваются на основе ID
Hibernate: выберите Person0_ID AS ID1_0_0_, Person0_.age as age2_0_0_, Person0_.name As name3_0_0_ от Person Person0_ где Person0_.id =?
Запрос по возрасту
Добавьте метод в PersonRepository Findbyage (целое возраст)
Публичный интерфейс PersonRepository расширяет jparePository <Person, Integer> { / ** * Запрос по возрасту * Название метода фиксированное находки * @param Age * @return * / public <Person> findbyage (Integer Age);}Добавить соответствующий метод запроса в PersonController
..../** * Запрос по возрасту * @param age * @return */@getmapping (value = "/person/age/{age}") public list <derss> personlistbyage (@pathvariable ("age") integer age) {return personrepository.findbyage (возраст); }Введите запрос http: // localhost: 8081/springboot/человек/возраст/23, чтобы запросить человека с 23 годами.
Консоль выводит оператор SQL:
Hibernate: выберите Person0_id AS ID1_0_, Person0_.age as age2_0_, person0_.name как имя 3_0_ от Person0_, где Person0_.age =?
Управление транзакциями
Два оператора SQL выполняются в одном методе одновременно. Чтобы не допустить успешного выполнения одного SQL -выписки, а другой оператор SQL не выполняется, вводится управление транзакциями. @Transactional Transaction Annotation требуется для добавления метода.
Транзакции Убедитесь, что целостность и согласованность данных базы данных
Personservice.java
В личности
пакет com.jxust.service; import com.jxust.dao.personrepository; import com.jxust.entity.person; import org.springframework.beans.factory.annotation.autowired; import org.springframework.stereoty.service; импорт javax.transaction.transaction 2016/12/16 19:30 */ @ServicePublic Class Personservice {@autowired частного лица PersonRepository; / *** Тест управления транзакциями* Два часа данных успешно достигают успеха или в то же время не достигают успеха* Убедитесь, что целостность и согласованность данных базы данных*/ @transactional public void inserttwo () {persona = new Person (); persona.setname ("Qiuya"); Persona.setage (19); PersonRepository.save (персона); System.out.print (1/0); Person personb = new Person (); personb.setname ("Mengtejiao"); PersonB.Setage (25); PersonRepository.save (personb); }}Тест в эр
... @auutowired частные лица; .../*** Тест транзакции*/@postmapping ("/person/two") public void persontwo () {personservice.inserttwo (); }Повторно запустите проект и выполните метод сообщения запроса http: // localhost: 8081/springboot/person/two
Первая часть данных не была добавлена в базу данных, что указывает на то, что есть управление транзакциями
Complete PersonController.java, PersonRepository.java и pom.xml
Personcontroller.java
пакет com.jxust.controller; import com.jxust.dao.personrepository; import com.jxust.entity.person; import com.jxust.service.personservice; import org.springframework.beans.factory.annotation.autowired; import org.spramework.bindation. java.util.list;/** * Создано Peng * Время: 2016/12/16 18:04 */ @RestControllerPublic Class PersonController {@autowired PersonRepository PersonRepository; @Auutowired частные лица; /** * Запросить список всего персонала * * @return */@getmapping (value = "/person") частный список <person> personlist () {return personrepository.findall (); }/** * Добавить человека * * @param name * @param age * @return */@postmapping (value = "/person") public persondd (@requestparam ("name") String name, @requestparam ("Age") Integer Age) {Person Person = New Person (); Person.setName (имя); Человек.setage (возраст); return personrepository.save (человек); }/** * Запрос человека * * @param id * @return */@getmapping (value = "/person/{id}") public personfindone (@pathvariable ("id") integer id) {return personrepository.findone (id); }/** * Удалить человека * * @param id */@deletemapping (value = "/person/{id}") public void persondelete (@pathvariable ("id") ID) {personrepository.delete (id); }/** * Обновите человека * * @param id * @param name * @param age * @return */@putmapping (value = "/person/{id}") public personupdate (@pathvariable ("id") integer id, @requestparam ("name") String name, @RequestParam ("Age") inte aGeger) {neal Person ("nember wome) {new Person ("); Person.setid (id); Person.setName (имя); Человек.setage (возраст); return personrepository.save (человек); }/** * Запрос по возрасту * @param age * @return */@getmapping (value = "/person/age/{age}") public <personlistristbyage (@pathvariable ("age") integer age) {return personrepository.findbyage (возраст); }/*** Тест транзакции*/@postmapping ("/person/two") public void persontwo () {personservice.inserttwo (); }}PersonRepository.java
Пакет com.jxust.dao; import com.jxust.entity.person; import org.springframework.data.jpa.repository.jparepository; импорт java.util.list;/** * Создан Peng * Время: 2016/12/16 18:07 */public incepositore extends jraporemity <prepository <perseregery> по возрасту * Имя метода фиксировано * @param age * @return */ public list <derssby> findbyage (целое возраст);}
Pom.xml
<? xml version = "1.0" Encoding = "utf-8"?> <project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <doliderversion> 4.0.0 </modelversion> <groupid> com.jxast </GroupId> <artifactid> spirngbootdemo </artifactid> <sersion> 0.0.1-snapshot </version> <duckaging> jar </packaging> <mame> spirngbootdemo </name> <distaging> Demo Project для Spring Boot> <parent> <groupid> org.spramework.boot </Groupid> <ratfactid> Spring-Boot-Starter-parent </artifactid> <sersion> 1.4.2.2.release </version> <venterativePath/> <!-Поиск родителей от репозитория-> </parent> <properties> <project.build.sourceencoding> utf-8 </project.build.sourceencoding> <project.reporting.outputencoding> UTF-8 </Project.Report.OutputEncoding> <java.version> 1.8 </java.version> </свойства> <Depertiencies> <dependency> <groupid> org.springframework.boot </Groupid> <ArtifactId> Spring-boot-starter-web-web <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependency> </dependency> </build> <blicins> <plugin> <groupid> org.springframework.boot </GroupId> <straCactId> Spring-boot-maven-plugin </artifactid> </plugin> </plugins> </build> </project>
Суммировать
Выше приведено подробное объяснение добавления базы данных Springboot Intellij Pressboot, удаления, модификации и поиска, представленных редактором. Я надеюсь, что это будет полезно для всех. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит всем вовремя. Большое спасибо за вашу поддержку сайту wulin.com!