Spring框架做什么?
春天不仅是今天,它被称为一个简单的框架,它是一个完整的生态系统。
春季生态系统涵盖的主题:
有关生态系统的完整信息,请参见此处。可以挑选项目,以便您可以使用Google Guice for DI和例如Spring Security来处理与安全相关的事情。您不必购买整个生态系统。
春季框架本身主要涵盖了今天
来源spring.io
通常,您可以说Spring是代码中已实施的模式和实践的集合,可以帮助改善或加快您的应用程序开发周期。
它(核心框架)最著名的是它在依赖注入领域的功能。Spring本身具有所谓的“控制容器反转”或“较短的IoC容器”甚至更短的容器(有时将“ spring”用作同义词)。
什么是依赖注入?
依赖注入意味着,您的对象通过外部机制接收对其他对象的每个依赖。
假设您有一辆汽车,通常的实现方式是:
public class Car {
Engine e;
public Car() {
e = new Engine();
}
}
汽车对象取决于引擎。由于发动机是汽车的一部分,因此不能将其换成测试发动机。
现在依赖注入开始起作用:
public class Car {
Engine e;
public Car(Engine e) {
this.e = e;
}
}
之后,您就可以切换引擎了。上面看到的称为构造函数注入。还有其他类型,例如setter -injection或method- injection。Spring如何帮助您?Spring允许它用注解标记要注入的组件@Autowired
,并自动完成被注入对象的接线-可能是,您要注入的组件本身具有依赖性。注射剂-可以说-通过以下方式标记@Component
public class Car {
Engine e;
@Autowired
public Car(Engine e) {
this.e = e;
}
}
但这只是Spring提供的众多功能之一。
我应该使用Spring吗?为什么或者为什么不?
由于Spring的侵入性不是很高,因此可以提供很多帮助,因此您应该考虑使用spring。尤其对于新项目,Spring Boot非常有吸引力。start.spring.io提供了易于使用的point'n'click -interface生成项目模板以进行入门。甚至可以curl
用来检索模板:
curl start.spring.io
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Initializr :: https://start.spring.io
This service generates quickstart projects that can be easily customized.
Possible customizations include a project's dependencies, Java version, and
build system or build structure. See below for further details.
The services uses a HAL based hypermedia format to expose a set of resources
to interact with. If you access this root resource requesting application/json
as media type the response will contain the following links:
+-----------------+-----------------------------------------+
| Rel | Description |
+-----------------+-----------------------------------------+
| gradle-build | Generate a Gradle build file |
| gradle-project | Generate a Gradle based project archive |
| maven-build | Generate a Maven pom.xml |
| maven-project * | Generate a Maven based project archive |
+-----------------+-----------------------------------------+
...
另一方面,诸如spark或dropwizard之类的框架也为快速创建Web应用程序提供了良好的起点。