广州旅游团购网站建设,徐州做网站最好的公司,可以做推广的网站有哪些,越秀建设网站这是一个分为两部分的系列#xff0c;其中我将展示如何使用Spring Boot创建分层架构。 什么是分层体系结构#xff1a;简而言之#xff0c;当我们构建企业应用程序时#xff0c;我们维护不同的层以封装特定于层的逻辑#xff0c;这样就不会溢出到另一层。 当我们考虑企业… 这是一个分为两部分的系列其中我将展示如何使用Spring Boot创建分层架构。 什么是分层体系结构简而言之当我们构建企业应用程序时我们维护不同的层以封装特定于层的逻辑这样就不会溢出到另一层。 当我们考虑企业应用程序时我们可以想象该架构的三个重要层。 1. 用户界面 与最终用户进行交互向他们显示数据接受用户输入接受他们的命令等。 2. 业务层 基于用户命令和从用户那里捕获的数据AKA表单它会做出特定于域的决策例如如何处理数据查找哪个表如何处理数据。从数据库中获取因此可以在UI中显示。 3. 持久层 该层捕获数据并对其进行持久化同样也捕获数据状态的任何更新删除和更改因此您可以将此层视为维护特定于应用程序数据的状态。 无论您的应用程序处于运行状态还是关闭状态它都会存储提交后的数据状态。 通过分层体系结构我们像所有代码一样创建每一层的逻辑封装有关UI的信息留在UI层中有关业务逻辑的所有代码均留在业务层中等等。 每一层都与其相邻的层通信但是从不与不相邻的另一层通信。 因此如果您的应用程序具有三层UI即BusinessDAOUI与Business进行通信Business与UI进行通信以及DAO和DAO与Business进行通信。 通过这种方式我们可以减少耦合使层可重复使用并欢迎体系结构的未来变化。 每个层都有其自己的模式以适应将来的更改并使该层可重用。 我们都知道Spring为每个层提供了不同的组件例如对于UI您可以使用Thymleaf或Spring模板或任何其他UI框架如JSF对于Business层可以使用Controller和service还可以在其中注入不同的框架如Struts它。 对于持久层您可以使用Spring数据JPAHibernateJDBC模板。 但是问题是您需要在pom.xml中添加所有插件/ Jars。 在类路径中找到依赖项的正确版本。 如果版本不匹配它将无法正常工作。 另外您还需要在Spring XML文件中添加许多Spring特定的批注或XML条目以在分层体系结构中使用那些组件/插件这是一种繁琐的方法。 另外您需要打包它们并将它们部署在应用程序服务器中因此需要许多手动干预。 Spring解决了这个问题并提出了一个称为Spring Boot的解决方案。 “ Spring-boot按照约定优于配置进行工作 ”-这意味着您不必考虑配置条目仅需注意业务逻辑只要您在类路径中提到了那些要使用的组件即可Spring Boot是如此。聪明它将了解您想要使用相同的配置并为您配置功能完备的组件。 假设您要在项目中使用JPA。 如果导入Spring boot starter JPA模块它将了解您要使用它并会即时为您创建Spring模板的存储库和实用程序CRUD方法。 如果没有Spring-boot则需要配置JPA模板从模板启动会话工厂获取会话等这些在这里不是必需的Spring boot如此强大可以为您完成此操作当然如果您想要自己控制配置您可以覆盖它们并使用自己的配置。 在本教程中我将向您展示如何使用Spring-boot逐步创建MVC分层体系结构您会感到惊讶。 在五分钟之内您可以创建并运行MVC架构该架构以前需要花费大量时间并且在版本不匹配的情况下会产生很多麻烦。 由于这是一个分为两部分的系列因此在第一部分中我们将建立数据库并使用JPA存储库将Employee数据插入数据库中。 在本教程中我们将使用以下组件 1. H2数据库 这是一个内存数据库它将持久存储数据直到应用程序关闭。 2. Spring Data JPA 我们将使用Spring data JPA组件在数据库中进行CRUD操作。 3. Rest Controller 与传统的MVC不同 Rest Controller将以JSON格式显示数据而不是将响应转发到View。 步骤1 转到start.spring.io并通过选择WebJPAH2 Module下载模板项目。 步骤2将该项目作为Maven项目导入eclipse。 步骤3检查pom.xmlspring-starter-webspring-starter-data-jpah2模块条目将在那里。 这些是Spring引导软件包其中包含jpa和web的所有必需依赖项并维护依赖jar的正确版本这样就不会出现版本不匹配的问题。 ?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd
modelVersion4.0.0/modelVersiongroupIdcom.example/groupId
artifactIdlayerdArchitechture/artifactId
version0.0.1-SNAPSHOT/version
packagingjar/packagingnamelayerdArchitechture/name
descriptionDemo project for Spring Boot/descriptionparent
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-starter-parent/artifactId
version2.0.4.RELEASE/version
relativePath/ !-- lookup parent from repository --
/parentproperties
project.build.sourceEncodingUTF-8/project.build.sourceEncoding
project.reporting.outputEncodingUTF-8/project.reporting.outputEncoding
java.version1.8/java.version
/propertiesdependencies
dependency
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-starter-data-jpa/artifactId
/dependency
dependency
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-starter-web/artifactId
/dependencydependency
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-devtools/artifactId
scoperuntime/scope
/dependency
dependency
groupIdcom.h2database/groupId
artifactIdh2/artifactId
scoperuntime/scope
/dependency
dependency
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-starter-test/artifactId
scopetest/scope
/dependency
/dependenciesbuild
plugins
plugin
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-maven-plugin/artifactId
/plugin
/plugins
/build/project 步骤4转到src / main / resources下的application.properties文件并将h2控制台启用为true这样我们就可以看到在h2数据库中插入的数据。 spring.h2.console.enabledtrue 步骤5让我们创建一个Employee实体。 package com.example.layerdArchitechture.entity;import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;Entity
public class Employee {
IdGeneratedValue
private Long id;
private String name;
private String address;
private String sex;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address address;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex sex;
}
Override
public String toString() {
return Employee [id id , name name , address address , sex sex ];
}} 步骤6现在创建一个EmployeeRepositiry接口它将扩展CrudRepository接口即时运行Spring-boot创建一个实现并创建所有的Utilitycrud方法我们只需要声明该接口就不需要做任何事情。 package com.example.layerdArchitechture.repository;import org.springframework.data.repository.CrudRepository;import org.springframework.stereotype.Repository;
import com.example.layerdArchitechture.entity.Employee;Repositorypublic interface EmployeeRepositiry extends CrudRepositoryEmployee, Long {} 步骤7.现在创建一个Data Loader类它将使用上述创建的存储库将少量员工插入H2数据库。 为此我必须自动连接EmployeeRepository接口。 请在这里注意loadData方法。 我创建了一个员工列表然后迭代该列表并使用Java8中的lambda表达式将这些数据保存在H2数据库中。 package com.example.layerdArchitechture;import java.util.ArrayList;
import java.util.List;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import com.example.layerdArchitechture.entity.Employee;
import com.example.layerdArchitechture.repository.EmployeeRepositiry;Component
public class InitDataLoader {
Autowired
private EmployeeRepositiry rep;public void loadData() {
createData().forEach(
emp-{
rep.save(emp);
System.out.println(Successfully saved :: emp);
});}private ListEmployee createData() {ListEmployee employees new ArrayListEmployee();Employee emp new Employee();
emp.setName(Shamik Mitra);
emp.setSex(M);
emp.setAddress(BagBazar);
Employee emp1 new Employee();
emp1.setName(Samir Mitra);
emp1.setSex(M);
emp1.setAddress(BagBazar);
Employee emp2 new Employee();
emp2.setName(Swastika Basu);
emp2.setSex(F);
emp2.setAddress(Baranagar);employees.add(emp);
employees.add(emp1);
employees.add(emp2);
return employees;
}} 步骤9我们需要告诉我们的应用程序扫描所有Spring Bean并找到JPA存储库和实体文件并将它们注册为Spring Bean因此我们将使用两个特殊的注释 在Spring启动主类的顶部SpringBoot和EnableJpaRepositories。 请注意在EnableJpaRepositories批注中我提到了从其开始查找存储库和实体的根包。 package com.example.layerdArchitechture;
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.CommandLineRunner;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
SpringBootApplication
EnableJpaRepositories(com.example.layerdArchitechture)
public class LayerdArchitechtureApplication {public static void main(String[] args) {
SpringApplication.run(LayerdArchitechtureApplication.class, args);
}Bean
public CommandLineRunner loadData(InitDataLoader loader) {
return args-loader.loadData();
}
} 注意loadData方法这是Java样式Bean配置在这里我称为InitLoader的load data方法。 当应用程序启动时将调用CommandLiner bean并将InitDataLoader作为Spring beanIOC注入因此我可以期望在启动Spring Boot应用程序时将所有数据插入数据库中。 步骤10启动应用程序我们可以看到员工已插入数据库中以验证是否转到以下网址 http// localhost8080 / h2-console我们可以看到以下内容 结论 我们已经使用Spring Boot成功插入了数据。 这里要观察的一件事将数据插入数据库中我们不必编写一行CRUD代码和JPA模板配置代码。 Spring Boot代表我们同样的身份。 在第二部分中我将向您展示如何将软管数据公开为JSON格式以便任何UI框架Angular5都将数据作为JSON使用或将这种分层体系结构用作微服务请稍作更改以使其成为微服务组件敬请期待。 翻译自: https://www.javacodegeeks.com/2018/10/layered-architecture-running-just-5-minutes-spring-boot-part-1.html