Spring的起源于J2EE密不可分,了解他们出现的历史,可以帮助我们更好的掌握Spring技术。
Java EE
什么是J2EE
**❓**问题1:什么是JAVA EE,他和JAVA语言本身,JAVA SE有什么关系呢?
- Java SE(Java Standard Edition)
- Java EE(Java Enterprise Edition)
❓****
java EE的起源
由于企业级应用需要处理的东西太多,包括网络、安全、数据库等等,1999年,SUN公司提出了一个想法:用**容器**
和**组件**
**的形式来提供服务,**容器负责共性的、底层的、复杂的内容,也为组件的运行提供环境,而组件负责具体的业务层面的内容。为了形成一个良好的JAVA开发生态,SUN公司还定义了一系列的规范,指定容器应该怎么做,组件应该怎么做。
容器是面向软件厂商,我们熟知的像tomcat就实现了J2EE容器规范,相应的还有jetty等等,而我们编写的程序,只要符合组件的规范,就可以跑在不同的容器上,这为程序的移植带来了极大的便利。
读一读这篇文章:IoC原理,介绍了为什么要使用IOC容器
****````
EJB容器与WEB容器有很多相同的地方,2002年10月份,Rod Johnson写了一本书《expert one to one J2EE Development without EJB》,基本思想是只使用Web容器而不使用EJB容器,并开发了一款在线订做应用,在这本书中,他使用了大量面向对象方法,实现了一个底层框架,在这个框架中第一次出现了依赖注入和AOP,这也是的起源(依赖注入和AOP与面向对象是息息相关的)。
<font style="color:rgb(32, 35, 39);">Java EE</font>
很多教程讲解Spring的时候,都会直接介绍Spring的两大核心IOC和AOP。作为初学者,看到这些概念都会一头雾水,学了半天也只知道了一些概念,似懂非懂。了解Spring的发展和Spring的设计理念对于我们掌握Spring是非常有帮助的。
Spring
最早是由Rod Johnson在他的**《Expert One-on-One J2EE Development without EJB》**一书中提出的用来取代EJB的轻量级框架。**<font style="color:rgb(51, 51, 51);">Spring Framework</font>**
public class BookService {
private HikariConfig config = new HikariConfig();
private DataSource dataSource = new HikariDataSource(config);
public Book getBook(long bookId) {
try (Connection conn = dataSource.getConnection()) {
...
return book;
}
}
}
public class UserService {
private HikariConfig config = new HikariConfig();
private DataSource dataSource = new HikariDataSource(config);
public User getUser(long userId) {
try (Connection conn = dataSource.getConnection()) {
...
return user;
}
}
}
public class CartServlet extends HttpServlet {
private BookService bookService = new BookService();
private UserService userService = new UserService();
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
long currentUserId = getFromCookie(req);
User currentUser = userService.getUser(currentUserId);
Book book = bookService.getBook(req.getParameter("bookId"));
cartService.addToCart(currentUser, book);
...
}
}