网站开发流程知乎苏州区建设局网站首页
- 作者: 五速梦信息网
- 时间: 2026年03月21日 07:36
当前位置: 首页 > news >正文
网站开发流程知乎,苏州区建设局网站首页,什么行业最需要网站建设,新上线的网站怎么做优化一、简介
1、什么是spring#xff1f; Spring是一个开源的轻量级Java应用开发框架#xff0c;它提供了一种简单、高效、灵活的方式来构建企业级应用程序。Spring框架的核心特点是依赖注入#xff08;Dependency Injection#xff09;和面向切面编程#xff08;Aspect-Ori…
一、简介
1、什么是spring Spring是一个开源的轻量级Java应用开发框架它提供了一种简单、高效、灵活的方式来构建企业级应用程序。Spring框架的核心特点是依赖注入Dependency Injection和面向切面编程Aspect-Oriented Programming它通过一组模块化的组件提供全面的支持使开发人员能够快速搭建可扩展、可维护的应用。 2、目的
学习Spring的目的可以总结为以下几点
简化开发Spring提供了一系列的工具和抽象简化了企业级应用开发过程。它通过依赖注入来解决对象间的依赖关系使得代码更加灵活、可测试和可维护。高效开发Spring框架提供了诸多模块如Spring MVC、Spring Boot等可以快速构建Web应用和微服务。它提供了一种约定优于配置的开发方式提高了开发效率。提高可扩展性Spring框架基于接口和模块化设计能够方便地集成其他开源框架和库。它的松耦合特性使得应用程序更易于扩展和维护。丰富的功能Spring拥有丰富的功能和特性包括事务管理、安全性、缓存、消息队列、调度等。它为开发人员提供了一系列解决方案使得应用程序开发更加便捷。
3、功能及使用范围
Spring的功能范围非常广泛包括但不限于以下方面
依赖注入和控制反转通过依赖注入Spring容器能够将对象之间的依赖关系管理起来使得对象的创建和使用解耦提高代码的灵活性和可测试性。面向切面编程Spring提供了面向切面编程AOP的支持可以将与核心业务逻辑无关的功能如事务管理、日志记录等进行横切提高了代码的重用性和可维护性。Web开发支持Spring提供了Spring MVC模块用于开发Web应用程序。它能够处理HTTP请求和响应进行URL路由、数据绑定、表单验证、视图解析等操作简化了Web开发过程。数据访问支持Spring框架提供了对各种数据访问技术的支持包括JDBC、ORM如Hibernate、MyBatis、JPA等。它通过抽象出一套统一的数据访问接口使得数据库访问更加方便和可替换。安全性支持Spring提供了一套强大的安全性框架可以进行认证和授权管理。它支持各种身份验证方式如基于表单的认证、基于角色的访问控制等保护应用程序的安全性。 总之Spring框架是Java开发领域最流行的框架之一它提供了丰富的功能和特性帮助开发人员构建可靠、高效的企业级应用程序。 一句话概括Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 二、spring IOC
1、ioc的理解 IoCInversion of Control控制反转是Spring框架的核心概念之一也是实现依赖注入的基础。它通过解耦对象之间的依赖关系使得对象的创建和管理由框架来负责而不是由开发人员手动管理。 在传统的程序设计中对象之间的依赖关系通常由开发人员在代码中进行硬编码对象直接通过关键字如new来创建和管理。这种方式存在一些问题如对象之间的耦合度高、可测试性差、扩展性差等。 而IoC则是一种思想上的转变它将对象的创建和管理权利交给了框架。具体来说IoC的核心思想是通过配置或注解告诉框架需要创建哪些对象以及对象之间的依赖关系。然后框架在应用程序运行时根据配置信息动态地创建和组装对象。 Spring通过IoC容器来实现控制反转。IoC容器是一个用于管理对象的容器它负责创建、组装、初始化和销毁对象。开发人员只需要配置对象的创建和依赖关系然后通过容器来获取需要的对象即可。 使用Spring的IoC容器开发人员可以达到以下几个目的
解耦对象之间的依赖关系通过IoC容器开发人员只需要关注对象的功能实现而不需要关心对象是如何创建和组装的。对象之间的依赖关系由容器负责管理降低了对象之间的耦合度。提高代码的可测试性由于对象的创建和组装由容器来完成开发人员可以很容易地对对象进行替换或模拟从而实现单元测试和集成测试。增强代码的可扩展性当需要添加新的功能或模块时只需要配置新的对象和依赖关系而不需要修改现有的代码。通过配置方式可以方便地在不影响现有代码的情况下进行扩展。提高代码的灵活性IoC容器使得对象的创建完全可配置化可以在运行时根据需要创建不同的实例。同时框架提供了生命周期管理和依赖解析等功能使得对象的管理更加便捷。 总而言之IoC是Spring框架的核心特性之一它通过控制反转的思想将对象的创建和依赖关系的管理交给了框架减少了对象之间的耦合度提高了代码的可测试性和可扩展性。 2、分析实现 首先创建好我们的maven项目 设置我们的pom.xml dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion3.8.1/versionscopetest/scope/dependency!– 2、导入spring依赖 –dependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion\({spring.version}/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-aspects/artifactIdversion\){spring.version}/version/dependency!– 5.1、junit –dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion\({junit.version}/versionscopetest/scope/dependency!-- 5.2、servlet --dependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion\){javax.servlet.version}/versionscopeprovided/scope/dependency 新建 我们用原来的方式写一下
编写一个接口 public interface UserService {public void updUser();
} 再编写一个实现类 public class UserServiceImpl1 implements UserService {public void updUser() {System.out.println(修改SQL用户数据);
} 我们原来的方式是这样写的 现在我们添加一个实现类 public class UserServiceImpl2 implements UserService {public void updUser() {System.out.println(修改SQL用户数据);//修改用户姓名System.out.println(修改用户姓名);}
} 当我们测试调方法的时候只需要改动后面的实现类 手动实例化的弊端 1、一旦依赖的接口实现需要大批量改动迭代维护成本高 2、当接口的实现类不统一维护成本更高
我们怎么解决这个问题呢
3、编写bean 首先我们要在maven项目里面的resources文件里面建立一个基于spring的xml文件 ?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd/beans 我们在web文件里面建立两个Class类 public class UserAction {private UserService us;public UserService getUs() {return us;}public void setUs(UserService us) {this.us us;}public String updUser() {us.updUser();return list;}} public class GoodsAction {private UserService us;public UserService getUs() {return us;}public void setUs(UserService us) {this.us us;}public String updUser() {us.updUser();return list;}} 编写一个测试类 public class demo1 {public static void main(String[] args) {
// 加载spring核心配置文件建模获取spring的上下文对象上下文对象中可以获取任何JavaBean对象ClassPathXmlApplicationContext context new ClassPathXmlApplicationContext(spring-context.xml);UserAction userAction (UserAction) context.getBean(userAction);userAction.updUser();GoodsAction goodsAction (GoodsAction) context.getBean(goodsAction);goodsAction.updUser();}
} 在我们的新建的这个spring-context.xml文件里面添加bean ?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd!–凡是在spring核心配置文件spring-context.xml中配置那么该类JavaBean就交给了spring容器管理–bean classcom.tgq.ioc.web.UserAction iduserActionproperty nameus refuserService1//beanbean classcom.tgq.ioc.web.GoodsAction idgoodsActionproperty nameus refuserService2//beanbean classcom.tgq.ioc.service.impl.UserServiceImpl1 iduserService1/bean classcom.tgq.ioc.service.impl.UserServiceImpl2 iduserService2/
/beans 三、spring IOC的注入方式 spring的ioc有哪些注入方式呢 set方法属性注入构造注入接口注入/自动装配 1、set方法属性注入 在我们前面的GoodsAction新添几个属性和get、set方法一个输出打印的方法toPrint() public class GoodsAction {private UserService us;private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name name;}public int getAge() {return age;}public void setAge(int age) {this.age age;}public ListString getPeoples() {return peoples;}public void setPeoples(ListString peoples) {this.peoples peoples;}private ListString peoples;public UserService getUs() {return us;}public void setUs(UserService us) {this.us us;}public String updUser() {us.updUser();return list;}public void toPrint() {System.out.println(this.name);System.out.println(this.age);System.out.println(this.peoples);}} 在print-context.xml里面设置值使用set方法属性注入用property bean classcom.tgq.ioc.web.GoodsAction idgoodsActionproperty nameus refuserService2/propertyproperty namename value旺财/property nameage value20/property namepeopleslistvalue留守儿童/valuevalue情侣/valuevalue留守老人/value/list/property/bean 在测试类里面调用 goodsAction.toPrint(); 2、构造注入 在我们的User Action里面添加属性及有参无参的构造方法一个输出打印的方法toPrint() public class UserAction {private UserService us;private String name;private int age;private ListString hobby;public UserAction() {}public UserAction(String name, int age, ListString hobby) {this.name name;this.age age;this.hobby hobby;}public UserService getUs() {return us;}public void setUs(UserService us) {this.us us;}public String updUser() {us.updUser();return list;}public void toPrint() {System.out.println(this.name);System.out.println(this.age);System.out.println(this.hobby);}
}在print-context.xml里面设置值使用构造输入需要用constructor-arg标签 bean classcom.tgq.ioc.web.UserAction iduserActionproperty nameus refuserService1/constructor-arg namename valuel/constructor-arg nameage value18/constructor-arg namehobbylistvalue唱/valuevalue跳/valuevaluerap/value/list/constructor-arg/bean 继续在测试类里面调用toPrint方法 3、自动装配 自动装配中byName和byType的区别 byName在配置好的文件中变量名不更改就不会报错。按照属性的名称进行自动装配。 当一个bean的属性名称与其他bean的id匹配时Spring容器会自动将该bean注入到对应的属性中。如果找不到匹配的bean则会抛出异常。在XML配置中可以使用autowirebyName或Autowired注解实现byName自动装配。 byType会在整个spring中寻找JavaBean按照属性的类型进行自动装配。 当一个bean的属性的类型与其他bean的class匹配时Spring容器会自动将该bean注入到对应的属性中。如果有多个匹配的bean则会抛出异常需要进行更具体的限定或使用Qualifier注解来解决。在XML配置中可以使用autowirebyType或Autowired注解实现byType自动装配。 四、spring与tomcat的整合/spring与web容器的整合 我们的xml文件 ?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansdefault-autowirebyNamexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd!–凡是在spring核心配置文件spring-context.xml中配置那么该类JavaBean就交给了spring容器管理–bean classcom.tgq.ioc.web.UserAction iduserActionproperty nameus refuserService1//beanbean classcom.tgq.ioc.web.GoodsAction idgoodsActionproperty nameus refuserService2//beanbean classcom.tgq.ioc.service.impl.UserServiceImpl1 iduserService1/bean classcom.tgq.ioc.service.impl.UserServiceImpl2 iduserService2/
/beans 编写一个过滤器 WebListener
public class sprintListener implements ServletContextListener {Overridepublic void contextInitialized(ServletContextEvent sce) {System.out.println(初始化);//spring的上下文ClassPathXmlApplicationContext context new ClassPathXmlApplicationContext(spring-context.xml);
//tomcat上下文ServletContext servletContext sce.getServletContext();servletContext.setAttribute(sprintContext, context);}
} 编写servlet类调用它 WebServlet(userlist)
public class Userservlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//获取到sprint的上下文对象ClassPathXmlApplicationContext Context (ClassPathXmlApplicationContext) req.getServletContext().getAttribute(sprintContext);UserService bean (UserService) Context.getBean(userService1);System.out.println(bean);bean.updUser();}
} 启动服务器就完成了整合
- 上一篇: 网站开发流程视频站长seo推广
- 下一篇: 网站开发免费维护一年广西seo公司
相关文章
-
网站开发流程视频站长seo推广
网站开发流程视频站长seo推广
- 技术栈
- 2026年03月21日
-
网站开发流程三大部分网站要怎么运营
网站开发流程三大部分网站要怎么运营
- 技术栈
- 2026年03月21日
-
网站开发流程三大部分上海建设机械网站
网站开发流程三大部分上海建设机械网站
- 技术栈
- 2026年03月21日
-
网站开发免费维护一年广西seo公司
网站开发免费维护一年广西seo公司
- 技术栈
- 2026年03月21日
-
网站开发哪里接单西安企业自助建站系统
网站开发哪里接单西安企业自助建站系统
- 技术栈
- 2026年03月21日
-
网站开发能赚多少钱wordpress wortd
网站开发能赚多少钱wordpress wortd
- 技术栈
- 2026年03月21日






