本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看活动链接
Spring Framework到底是做什么用的?
我听说过很多有关Spring的信息,人们在网络上都说Spring是Web开发的一个很好的框架。简而言之,Spring Framework到底是做什么的?为什么我应该在纯Java上使用它。
高分回答:
基本上,Spring是一个框架 依赖注入 这是一种允许构建高度分离的系统的模式。 问题
例如,假设您需要列出系统的用户,从而声明一个名为的接口UserLister:
public interface UserLister {
List<User> getUsers();
}
也许是一个访问数据库以获取所有用户的实现:
public class UserListerDB implements UserLister {
public List<User> getUsers() {
// DB access code here
}
}
在您的视图中,您需要访问一个实例(仅作为示例,请记住):
public class SomeView {
private UserLister userLister;
public void render() {
List<User> users = userLister.getUsers();
view.render(users);
}
}
请注意,上面的代码尚未初始化变量userLister。我们应该做什么?如果我像这样显式实例化该对象:
UserLister userLister = new UserListerDB();
...我会将视图与实现访问数据库的类的实现结合在一起。如果我想从数据库实现切换到另一个从逗号分隔的文件中获取用户列表的实现该怎么办(请记住,这是一个示例)?在这种情况下,我将再次进入我的代码并将上面的行更改为:
UserLister userLister = new UserListerCommaSeparatedFile();
这样的小程序没有问题,但是...在具有数百个视图和类似数量的业务类的程序中会发生什么?维护成了一场噩梦! Spring(依赖注入)方法
什么春天确实是来连线通过使用XML文件或注解,这样所有的对象实例化和春天初始化和班达注射在适当的地方(Servlet的Web框架,业务类,DAO的,等,等,等...)。
回到Spring中的示例,我们只需要为该userLister字段设置一个setter,并拥有一个像这样的XML文件:
<bean id="userLister" class="UserListerDB" />
<bean class="SomeView">
<property name="userLister" ref="userLister" />
</bean>
或更简单地使用以下注释在我们的视图类中归档@Inject:
@Inject
private UserLister userLister;
// without adding any line of code
当视图被创建这样奇迹般地将有一个UserLister准备工作。
List<User> users = userLister.getUsers(); // This will actually work
这太棒了!是不是
如果要使用UserLister接口的其他实现怎么办?只需更改XML。
如果尚未UserLister准备好实施该怎么办?对时态模拟实现进行编程,UserLister并简化视图的开发。
如果我不想再使用Spring怎么办?只是不要使用它!您的应用程序未与此耦合。控制反转状态:“应用程序控制框架,而不是框架控制应用程序”。
依赖注入还有其他选择,在我看来,Spring除了简单,优雅和稳定外,还让Spring如此出名是因为SpringSource的人已经编写了许多POJO,这些POJO有助于将Spring与许多其他通用框架集成在一起。侵入您的应用程序。而且,Spring有几个不错的子项目,例如Spring MVC,Spring WebFlow,Spring Security以及大量的etceteras列表。
希望这可以帮助。无论如何,我鼓励您阅读Martin Fowler关于依赖注入和控制反转的文章,因为他比我做得更好。了解基本看一看之后Spring文档,在我看来,这是 曾经是最好的春季书永远ction authorizedUsers = filter(allUsers, isAuthorized);
>文章翻译自https://kgs4h5t57thfb6iyuz6dqtun5y-ac4c6men2g7xr2a-stackoverflow-com.translate.goog/questions/1061717/what-exactly-is-spring-framework-for
**作者建议:强大的生态,微服务spring cloud**
$\color{red}欢迎关注我的专栏StackOverFlow,我会筛选优质的问答,面试常考!!!{~}$
$\color{red}有最新、优雅的实现方式,我也会在文末写出我对本问答的见解{~}$
真心感谢帅逼靓女们能看到这里,如果这个文章写得还不错,觉得有点东西的话
求点赞👍 求关注❤️ 求分享👥 对8块腹肌的我来说真的 非常有用!!!
如果本篇博客有任何错误,请批评指教,不胜感激 !❤️❤️❤️❤️