首页编程java编程java spring java三大主流框架

java spring java三大主流框架

编程之家2026-05-29829次浏览

其实java spring的问题并不复杂,但是又很多的朋友都不太了解java三大主流框架,因此呢,今天小编就来为大家分享java spring的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

java spring java三大主流框架

java中spring是什么意思

java中spring是一个框架。

Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性的角度而言,绝大部分Java应用都可以从Spring中受益。

spring优点:

◆J2EE应该更加容易使用。

◆面向对象的设计比任何实现技术(比如J2EE)都重要。

◆面向接口编程,而不是针对类编程。Spring将使用接口的复杂度降低到零。(面向接口编程有哪些复杂度?)

java spring java三大主流框架

◆代码应该易于测试。Spring框架会帮助你,使代码的测试更加简单。

◆JavaBean提供了应用程序配置的最好方法。

◆在Java中,已检查异常(Checked exception)被过度使用。框架不应该迫使你捕获不能恢复的异常。

spring 中如何实现jsp与java的交互

spring中利用mvc框架就可以实现jsp和java交互了。

以下用spring mvc输出hello world为例来说明:

一、项目依赖的jar包:

java spring java三大主流框架

1.Spring框架依赖的jar包:

日志:commons-logging-1.1.3.jar;

JSTL支持:jakarta-taglibs-standard-1.1.2中的jstl.jar和standard.jar;

2.Spring的jar包:

spring-framework-3.2.5.RELEASE/libs中的jar包(这里为了方便我直接把全部都复制过去了);

把以上的jar包全部复制到项目的WebContent/WEB-INF/lib目录中。

二、在/WEB-INF中添加web.xml文件,文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="" xmlns="" xmlns:web="" xsi:schemaLocation=" " id="WebApp_ID" version="3.0">

<display-name>SpringMVCLesson</display-name>

<servlet>

<servlet-name>SpringMVCLesson</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:springservlet-config.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup><!-- load-on-startup必须放在最后-->

</servlet>

<!-- Spring MVC配置文件结束-->

<servlet-mapping>

<servlet-name>SpringMVCLesson</servlet-name>

<url-pattern>/</url-pattern>

</servlet-mapping>

</web-app>

三、springservlet-config.xml文件配置:

在项目中新建一个resources的Source Folder文件夹,并添加springservlet-config.xml文件。

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns=""

xmlns:xsi=""

xmlns:p=""

xmlns:context=""

xmlns:util=""

xmlns:mvc=""

xsi:schemaLocation="

">

<!--默认的注解映射的支持-->

<mvc:annotation-driven/>

<!--如果当前请求为“/”时,则转发到“/helloworld/index”-->

<mvc:view-controller path="/" view-name="forward:/helloworld/index"/>

<!--静态资源映射-->

<mvc:resources mapping="/js/**" location="/WEB-INF/js/"/>

<mvc:resources mapping="/css/**" location="/WEB-INF/css/"/>

<mvc:resources mapping="/fonts/**" location="/WEB-INF/fonts/"/>

<mvc:resources mapping="/plugins/**" location="/WEB-INF/plugins/"/>

<mvc:resources mapping="images/**" location="/WEB-INF/images/"/>

<!--当上面要访问的静态资源不包括在上面的配置中时,则根据此配置来访问-->

<mvc:default-servlet-handler/>

<!--开启controller注解支持-->

<!-- use-default-filters="false"只扫描指定的注解-->

<context:component-scan base-package="com.demo.web.controllers" use-default-filters="false">

<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>

</context:component-scan>

<!--视图解析器-->

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>

<property name="contentType" value="text/html"/>

<property name="prefix" value="/WEB-INF/views/"/>

<property name="suffix" value=".jsp"/>

</bean>

</beans>

<mvc:annotation-driven/>开启注解映射支持,它是为了简化配置的缩写形式,它相当于以下2个配置:

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

由于我们在web.xml文件里面配置的是拦截所有的请求到该servlet,所以我们在这里要对静态资源文件映射作一下配置,否则请求这些资源文件会返回404:

<!--静态资源映射-->

<mvc:resources mapping="/js/**" location="/WEB-INF/js/"/>

<mvc:resources mapping="/css/**" location="/WEB-INF/css/"/>

<mvc:resources mapping="/fonts/**" location="/WEB-INF/fonts/"/>

<mvc:resources mapping="/plugins/**" location="/WEB-INF/plugins/"/>

<mvc:resources mapping="images/**" location="/WEB-INF/images/"/>

<!--当上面要访问的静态资源不包括在上面的配置中时,则根据此配置来访问-->

<mvc:default-servlet-handler/>

开启Controller注解支持,并配置只扫描指定包下面的Controller:

<context:component-scan base-package="com.demo.web.controllers" use-default-filters="false">

<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>

</context:component-scan>

配置视图解析器,并指定视图所在的文件夹:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>

<property name="contentType" value="text/html"/>

<property name="prefix" value="/WEB-INF/views/"/>

<property name="suffix" value=".jsp"/>

</bean>

添加HelloWorldController,在项目中新建一个web的Source Folder文件夹,并在文件夹下面添加com.demo.web.controllers包,在包中添加一个HelloWorldController类,类中内容如下:

package com.demo.web.controllers;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.servlet.ModelAndView;

@Controller

@RequestMapping(value="/helloworld")

public class HelloWorldController{

@RequestMapping(value="/index", method={RequestMethod.GET})

public ModelAndView index(){

ModelAndView modelAndView= new ModelAndView();

modelAndView.addObject("message","Hello World!");

modelAndView.setViewName("index");

return modelAndView;

}

}

其中@Controller注解把该class指定为controller,controller上的@RequestMapping注解的 value值指定该controller所映射的请求。

方法上的@RequestMapping注解指定该方法为一个action,value值指定该action所映射的请求,method中的RequestMethod.GET指定该action只接受get请求。

ModelAndView中的setViewName指定了该action所对应的视图名称,解析视图时会在springservlet-config.xml文件指定的视图文件夹中寻找对应的视图。

添加视图,在项目/WEB-INF文件夹下新建一个views文件夹,并在views中添加index.jsp视图,视图内容如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

${message}

</body>

</html>

运行项目输出结果:

java怎么配置spring的bean

众所周知,Spring框架是控制反转(IOC)或依赖性注入(DI)模式的推动因素,而这种推动是通过基于容器的配置实现的。过去,Spring允许开发人员使用基于 XML的配置,通过利用应用程序上下文 XML文件来管理 bean依赖性。此文件处于应用程序的外部,包含 bean及其与该应用程序的依赖项的定义。尽管使用 XML配置较为简单和便捷,但仍有另外一种方法可定义 bean及其依赖项。这种方法也称为基于 Java的配置。不同于 XML,基于 Java的配置使您能够以编程方式管理 bean。这可通过运用多种注释来实现。这篇文章将演示 Java配置示例,并将其与传统 XML配置方法相对比。本文将按照如下步骤演示基于 Java的配置的基本用法:

理解@Configuration和@Bean注释

使用 AnnotationConfigApplicationContext注册配置类

配置 Web应用程序

实现 bean生命周期回调和范围

我们将使用一所在线大学的“创建课程”用例。在创建课程的过程中,还会创建主题或者模块,而各主题可能又有着不同的作业。因此,我们要创建三个 bean,分别为 Course、Module和 Assignment。Course bean将包含一个对 Module bean的引用,后者包含对 Assignment bean的引用。

理解@Configuration和@Bean注释

在理想的场景中,您可以在表示应用程序上下文的 XML中定义 bean。以下代码展示了创建课程用例中的上下文 XML及 bean定义:

清单 1. XML与 bean定义

<beans>

<bean id="course" class="demo.Course">

<property name="module" ref="module"/>

</bean>

<bean id="module" class="demo.Module">

<property name="assignment" ref="assignment"/>

</bean>

<bean id="assignment" class="demo.Assignment"/>

</beans>

以上 XML就是您在使用 Spring配置 bean时通常会编写的代码。这段 XML代码定义了 Course bean,它引用 Module bean。Module bean有一个 Assignment bean的引用。您现在要删除这段 XML,编写同等效果的 Java代码。您将使用基于 Java的配置定义上面指定的 bean。我们会将 XML替换为 Java类,这个 Java类现在将用作 bean配置的平台。我们将这个类命名为 AppContext.java。以下代码展示了 AppContext类。

清单 2.包含 bean定义的 AppContext配置类

@Configuration

public class AppContext{

@Bean

public Course course(){

Course course= new Course();

course.setModule(module());

return course;

}

@Bean

public Module module(){

Module module= new Module();

module.setAssignment(assignment());

return module;

}

@Bean

public Assignment assignment(){

return new Assignment();

}

}

正如您通过以上代码所看到的那样,现在可以以编程的方式将 bean定义为基于 Java的配置的一部分。AppContext类现在就像 XML一样表示配置类。这是通过利用@Configuration注释实现的。@Configuration注释位于类的顶端。它告知 Spring容器这个类是一个拥有 bean定义和依赖项的配置类。@Bean注释用于定义 bean。上述注释位于实例化 bean并设置依赖项的方法上方。方法名称与 bean id或默认名称相同。该方法的返回类型是向 Spring应用程序上下文注册的 bean。您可使用 bean的 setter方法来设置依赖项,容器将调用它们来连接相关项。基于 Java的配置也被视为基于注释的配置。

使用 AnnotationConfigApplicationContext注册配置类

在传统 XML方法中,您可使用 ClassPathXmlApplicationContext类来加载外部 XML上下文文件。但在使用基于 Java的配置时,有一个AnnotationConfigApplicationContext类。AnnotationConfigApplicationContext类是 ApplicationContext接口的一个实现,使您能够注册所注释的配置类。此处的配置类是使用@Configuration注释声明的 AppContext。在注册了所述类之后,@Bean注释的方法返回的所有 bean类型也会得到注册。以下代码演示了 AnnotationConfigApplicationContext类的使用:

清单 3.使用 AnnotationConfigApplicationContext注册 AppContext类

public static void main(String[] args){

ApplicationContext ctx= new AnnotationConfigApplicationContext(AppContext.class);

Course course= ctx.getBean(Course.class);

course.getName();

}

正如以上代码所示,AppContext配置类的注册方式是将其传递给 AnnotationConfigApplicationContext构造函数。此外,您还可以使用所述上下文类的 register方法来注册配置类。以下代码展示了另外一种方法。

清单 4.注册 AppContext类:另外一种方法

public static void main(String[] args){

ApplicationContext ctx= new AnnotationConfigApplicationContext();

ctx.register(AppContext.class)

}

注册配置类将自动注册@Bean注释的方法名称,因而其对应的 bean就是 Course、Module和 Assignment。随后您可以使用 getBean方法来获取相关的 bean,并调用其业务方法。如您所见,编写 Java的配置类并将其注册到 Spring上下文非常简单。下一节将讨论如何将基于 Java的配置与 Web应用程序配合使用。

配置 Web应用程序

过去,您通常要利用 XmlWebApplicationContext上下文来配置 Spring Web应用程序,即在 Web部署描述符文件 web.xml中指定外部 XML上下文文件的路径。XMLWebApplicationContext是 Web应用程序使用的默认上下文类。以下代码描述了 web.xml中指向将由ContextLoaderListener监听器类载入的外部 XML上下文文件的元素。

清单 5.使用外部 XML上下文文件的 web.xml

<web-app>

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/applicationContext.xml</param-value>

</context-param>

<listener>

<listener-class>

org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>

<servlet>

<servlet-name>sampleServlet</servlet-name>

<servlet-class>

org.springframework.web.servlet.DispatcherServlet

</servlet-class>

</servlet>

...

</web-app>

现在,您要将 web.xml中的上述代码更改为使用 AnnotationConfigApplicationContext类。切记,XmlWebApplicationContext是 Spring为 Web应用程序使用的默认上下文实现,因此您永远不必在您的 web.xml文件中显式指定这个上下文类。现在,您将使用基于 Java的配置,因此在配置 Web应用程序时,需要在 web.xml文件中指定 AnnotationConfigApplicationContext类。上述代码将修改如下:

清单 6.修改后的使用 AnnotationConfigApplicationContext的 web.xml

<web-app>

<context-param>

<param-name>contextClass</param-name>

<param-value>

org.springframework.web.context.

support.AnnotationConfigWebApplicationContext

</param-value>

</context-param>

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>

demo.AppContext

</param-value>

</context-param>

<listener>

<listener-class>

org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>

<servlet>

<servlet-name>sampleServlet</servlet-name>

<servlet-class>

org.springframework.web.servlet.DispatcherServlet

</servlet-class>

<init-param>

<param-name>contextClass</param-name>

<param-value>

org.springframework.web.context.

support.AnnotationConfigWebApplicationContext

</param-value>

</init-param>

</servlet>

...

</web-app>

以上修改后的 web.xml现在定义了 AnnotationConfigWebApplicationContext上下文类,并将其作为上下文参数和 servlet元素的一部分。上下文配置位置现在指向 AppContext配置类。这非常简单。下一节将演示 bean的生命周期回调和范围的实现。

实现 bean生命周期回调和范围

生命周期回调

您还可以使用基于 Java的配置来管理 bean的生命周期。@Bean支持两种属性,即 initMethod和 destroyMethod,这些属性可用于定义生命周期方法。在实例化 bean或即将销毁它时,容器便可调用生命周期方法。生命周期方法也称为回调方法,因为它将由容器调用。使用@Bean注释注册的 bean也支持 JSR-250规定的标准@PostConstruct和@PreDestroy注释。如果您正在使用 XML方法来定义 bean,那么就应该使用 bean元素来定义生命周期回调方法。以下代码显示了在 XML配置中通常使用 bean元素定义回调的方法。

清单 7.使用 XML方法实现生命周期回调

<bean id="course" class="demo.Course" init-method="setup" destroy-method="cleanup">

<property name="module" ref="module"/>

</bean>

以下代码演示了使用 Java配置的生命周期方法

清单 8.使用 AppContext配置类实现 bean生命周期方法

@Configuration

public class AppContext{

@Bean(initMethod="setup", destroyMethod="cleanup")

public Course course(){

Course course= new Course();

course.setModule(module());

return course;

}

@Bean(initMethod="setup", destroyMethod="cleanup")

public Module module(){

Module module= new Module();

module.setAssignment(assignment());

return module;

}

...

}

public class Course{

private Module module;

private String name;

public Course(){

}

public void setup(){

this.name="M100 Pythagoras Theorems"

}

public void setModule(Module module){

this.module= module;

}

public void cleanup(){

module= null;

}

}

上面的代码重新访问了 AppContext配置类。@Bean注释现在有两个额外的属性,即 initMethod和 destroyMethod。它们定义了生命周期方法的设置和清除。这些方法是在已经注册的 bean中实现的,最终由容器在 bean初始化及其销毁之前调用它。这里以 Course bean为例,提供了生命周期方法实现。所实现的方法是 setup和 cleanup。同样,您还可以在 Module和 Assignment bean中实现这些方法。

Bean范围

bean的方法是使用@Scope注释定义的。XML中实现这一目标的方法是指定 bean元素中的 scope属性。

清单 9.使用 XML方法定义 bean范围

<bean id="course" class="demo.Course" scope="prototype">

<property name="module" ref="module"/>

</bean>

以下代码展示了使用 Java配置的 bean范围定义:

清单 10.使用 AppContext配置类定义 bean范围

@Configuration

public class AppContext{

@Bean(initMethod="setup", destroyMethod="cleanup")

@Scope("prototype")

public Course course(){

Course course= new Course();

course.setModule(module());

return course;

}

...

}

正如您在上面的代码中所看到的那样,在 Java配置类中定义 bean的范围非常简单。上面的 AppContext配置类使用@Scope注释为 Coursebean定义了一个 prototype范围。默认范围是 singleton。

利用 Java配置可以做许多事情。本文只触及了一些基础内容。使用 Java配置并无显著优势,它仅仅是 Spring提供的 XML配置的替代方法。对于不喜欢在框架中使用 XML的人来说,这是实现配置的一种出色方法。但缺点也是显而易见的,如果您对 Java类中的配置做出了任何更改,就必须重新编译应用程序。

文章到此结束,如果本次分享的java spring和java三大主流框架的问题解决了您的问题,那么我们由衷的感到高兴!

dnf泰拉石武器任务 dnf泰拉石任务在哪里接ai写作为什么不如ai绘画 ai写作哪个好用