Spring之搭建spring开发环境
Struct2、Hibernate3、Spring3框架搭建实战

Struct2、Hibernate3、Spring3框架搭建实战采⽤⽬前最新的struts-2.3.1.2、hibernate3.6.10.Final、spring-framework-3.1.1.RELEASE开发包,以及eclipse-jee-indigo-SR2-win32、apache-tomcat-7.0.27服务器、JDK6和mysql5做开发环境,参考了前辈的⼀篇相关⽂章,改正了其中的错误和疏漏,克服了公司分配的“新”机器每⼩时⾃动重启三次的困难,终于把环境给搭好了。
整个过程中遵循的⼀个原则是,避免引⼊⽤不到的jar包,以求搭建⼀个最⼩的SSH 运⾏环境。
⾸先创建⼀个Dynamic web project 输⼊任意名字如SSHBase。
第⼀步:加载Spring环境我们需要引⼊的包有:org.springframework.asm-3.1.1.RELEASE.jarorg.springframework.beans-3.1.1.RELEASE.jarorg.springframework.context-3.1.1.RELEASE.jarorg.springframework.core-3.1.1.RELEASE.jarorg.springframework.expression-3.1.1.RELEASE.jarorg.springframework.jdbc-3.1.1.RELEASE.jarorg.springframework.web-3.1.1.RELEASE.jarorg.springframework.orm-3.1.1.RELEASE.jar由于spring默认开启了⽇志,还需要加⼊commons-logging的jar包,否则会报错。
建议不要⼀次性加⼊应该先加最核⼼的运⾏代码看缺少什么加什么,这样就不会加多余的包进来了,spring3已经把包按功能分开,不像以前⼀个包,这样更灵活,只要运⾏我们需要的功能,⽽没⽤到的就不⽤在硬性的添加进来。
SpringMVC框架搭建流程(完整详细版)

SpringMVC框架搭建流程(完整详细版)SpringMVC框架搭建流程开发过程1)配置DispatcherServlet前端控制器2)开发处理具体业务逻辑的Handler(@Controller、 @RequestMapping)3) xml配置⽂件配置controller扫描,配置springmvc三⼤件4)将xml⽂件路径告诉springmvc(DispatcherServlet)详细流程:创建⽬录新建maven项⽬,注意选择webapp⾻架。
创建成功之后会发现没有src等⽬录,这些需要我们⼿动创建:在src下⾯新建main,main下⾯新建java⽬录,选择java⽬录,右键,在main下⾯继续新建resource⽬录,选择resource⽬录,右键,pom.xmlpom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion><groupId></groupId><artifactId>springmvc-demo</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><piler.source>11</piler.source><piler.target>11</piler.target></properties><dependencies><!--引⼊spring webmvc的依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.1.12.RELEASE</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><port>8080</port><path>/</path></configuration></plugin></plugins></build></project>注意Tomcat7插件是⽤来运⾏项⽬的,右侧运⾏:springmvc相关配置main⽂件夹下⾯新建webapp⽂件夹,webapp下⾯新建WEB-INF,下⾯新建web.xml<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Application</display-name><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><!--⽅式⼀:带后缀,⽐如*.action *.do *.aaa该种⽅式⽐较精确、⽅便,在以前和现在企业中都有很⼤的使⽤⽐例⽅式⼆:/ 不会拦截 .jsp,但是会拦截.html等静态资源(静态资源:除了servlet和jsp之外的js、css、png等)为什么配置为/ 会拦截静态资源因为tomcat容器中有⼀个web.xml(⽗),你的项⽬中也有⼀个web.xml(⼦),是⼀个继承关系⽗web.xml中有⼀个DefaultServlet, url-pattern 是⼀个 /此时我们⾃⼰的web.xml中也配置了⼀个 / ,覆写了⽗web.xml的配置为什么不拦截.jsp呢?因为⽗web.xml中有⼀个JspServlet,这个servlet拦截.jsp⽂件,⽽我们并没有覆写这个配置,所以springmvc此时不拦截jsp,jsp的处理交给了tomcat如何解决/拦截静态资源这件事?⽅式三:/* 拦截所有,包括.jsp--><!--拦截匹配规则的url请求,进⼊springmvc框架处理--><url-pattern>/</url-pattern></servlet-mapping></web-app>⾥⾯配置了springmvc相关的配置,引⼊了springmvc.xml:在resource⽬录下新建springmvc.xml:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xmlns:mvc="/schema/mvc"xsi:schemaLocation="/schema/beanshttps:///schema/beans/spring-beans.xsd/schema/contexthttps:///schema/context/spring-context.xsd/schema/mvchttps:///schema/mvc/spring-mvc.xsd"><!--开启controller扫描--><context:component-scan base-package=".controller"/><!--配置springmvc的视图解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/"/><property name="suffix" value=".jsp"/></bean><!--⾃动注册最合适的处理器映射器,处理器适配器(调⽤handler⽅法)--><mvc:annotation-driven/></beans>在java⽬录下新建包.controller,下⾯新建DemoController:package .controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import java.util.Date;/*** @author lyj* @Title: DemoController* @ProjectName springmvc-demo* @Description: TODO* @date 2020/6/9 21:21*/@Controller@RequestMapping("/demo")public class DemoController {/*** http://localhost:8080/demo/handle01*/@RequestMapping("/handle01")public ModelAndView handle01(){Date date=new Date();ModelAndView modelAndView=new ModelAndView();modelAndView.addObject("date",date);modelAndView.setViewName("success");return modelAndView;}}在WEB-INF下⾯新建jsp⽂件夹,下⾯新建success.jsp:<%@ page language="java" isELIgnored="false" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body>当前时间 ${date}</body></html>完毕后整个项⽬结构如下:测试:浏览器访问:。
vscode搭建springboot开发环境

vscode搭建springboot开发环境1. JDK,Maven1.1 下载略1.2 设置系统环境变量jdk增加环境变量JAVA_HOME=C:\Program Files\Java\jdk1.8.0_191(安装路径)增加路径Path=%JAVA_HOME%\bin检测命令:java -version javacmaven增加环境变量MAVEN_HOME=D:\soft\apache-maven-3.6.1 (解压路径)增加路径Path=%MAVEN_HOME%\bin检测命令 mvn -v1.3 更换maven镜像仓库在路径D:\soft\apache-maven-3.6.1\conf\settings.xml的mirrors中增加阿⾥仓库:<mirror><id>alimaven</id><name>aliyun maven</name><url>/nexus/content/repositories/central/</url><mirrorOf>central</mirrorOf></mirror>配置仓库存放本地路径<localRepository>D:\maven\repository\repo</localRepository>2 VS Code配置2.1 安装插件 Java Extension Pack安装此插件时会同时安装下列关联插件:- Language Support for Java(TM) by Red Hat- Java Extension Pack- Java Test Runner- Maven for Java2.2 安装插件 Spring Boot Extension Pack安装此插件时会同时安装下列关联插件:- Spring Boot Tools- Cloudfoundry Manifest YML Support- Concourse CI Pipeline Editor- Spring Initializr Java Support2.3 修改配置⽂件 setting.json//java jdk地址"java.home": "C:\\Program Files\\Java\\jdk1.8.0_191",//mvaen配置⽂件路径"erSettings": "D:\\soft\\apache-maven-3.6.1\\conf\\settings.xml",//maven命令执⾏路径"maven.executable.path": "D:\\soft\\apache-maven-3.6.1\\bin\\mvn.cmd","eJavaHome": true,"maven.terminal.customEnv": [{"environmentVariable": "JAVA_HOME","value": "C:\\Program Files\\Java\\jdk1.8.0_191"}],3. spring boot项⽬创建、运⾏、调试。
如何进行软件开发中的Spring框架的使用和管理

如何进行软件开发中的Spring框架的使用和管理软件开发中的Spring框架是一个广泛使用的框架,被许多开发者视为最重要的框架之一。
它提供了一种易于使用的方法来构建企业级应用程序,并且在可维护性、可测试性和可扩展性方面都表现出色。
从本文开始,我们将讨论如何在软件开发中使用和管理Spring框架。
一、Spring框架简介Spring框架是一个开源框架,提供了许多Java开发任务中常见的功能。
它可以轻松地实现依赖注入和控制反转,从而使开发者能够轻松地编写更灵活、更可维护的应用程序。
同时,Spring框架还提供了一系列的上下文支持,包括Web上下文支持、JDBC 支持、事务管理支持等。
这些支持使得Spring框架可以轻松地与其他常见技术如Hibernate、MyBatis等框架集成使用。
二、Spring框架的核心组件Spring框架有很多核心组件,其中最常用的是Spring核心容器、AOP(面向切面编程)模块和Spring MVC模块。
Spring核心容器允许开发者创建不同类型的对象并管理这些对象的生命周期。
该容器主要包含了BeanFactory和ApplicationContext两个容器。
其中,BeanFactory容器是Spring框架最基本的容器,主要用于创建和管理对象。
而ApplicationContext容器则是在BeanFactory之上构建而成,它提供了更加方便的实现,并且额外提供了在不同的上下文环境组件的方式。
AOP模块是Spring框架的另一个重要组件,它使得开发者可以通过把特定的代码切分成易于理解的部分(切面),从而更加简单地管理代码。
对于需要在多个应用程序层面上实现一些功能的开发者来说,AOP模块提供了一个妙手的解决方案。
最后,Spring MVC是用于创建Web应用程序的模块。
通过使用Spring MVC,开发者可以快速地创建一个Web应用程序,并且可以很容易地扩展和维护这个应用程序。
实验一Spring环境配置

<beansxmlns="/schema/beans"
xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/schema/beans
传统J2EE应用的开发效率低,应用服务器厂商对各种技术的支持并没有真正统一,导致J2EE的应用没有真正实现Write Once及Run Anywhere的承诺。Spring作为开源的中间件,独立于各种应用服务器,甚至无须应用服务器的支持,也能提供应用服务器的功能,如声明式事务、事务处理等。
Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而是与它们无缝地整合。
}
publicvoidrecharge(){
System.out.println("您好"+user.getAccount()+"用户,你的账户充值成功!");
System.out.println("充值金额为:"+user.getMoney());
}
publicvoidread(){
try(BufferedReader reader =newBufferedReader(
(三)Spring由哪些模块组成?它们分别有些什么作用?
Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,如图所示:
1.1SpringBoot环境配置和常用注解

1.1SpringBoot环境配置和常⽤注解Spring Boot常⽤注解:@Service: 注解在类上,表⽰这是⼀个业务层bean@Controller:注解在类上,表⽰这是⼀个控制层bean@Repository: 注解在类上,表⽰这是⼀个数据访问层bean@Component:注解在类上,表⽰通⽤bean ,value不写默认就是类名⾸字母⼩写@Autowired:按类型注⼊.默认属性required= true;当不能确定Spring 容器中⼀定拥有某个类的Bean 时,可以在需要⾃动注⼊该类Bean 的地⽅可以使⽤@Autowired(required = false),这等于告诉Spring:在找不到匹配Bean时也不抛出BeanCreationException 异常。
@Autowired 和 @Qualifier 结合使⽤时,⾃动注⼊的策略就从byType 转变byName 了。
@Autowired可以对成员变量、⽅法以及构造函数进⾏注释,⽽@Qualifier 的标注对象是成员变量、⽅法⼊参、构造函数⼊参。
正是由于注释对象的不同,所以 Spring 不将 @Autowired 和 @Qualifier 统⼀成⼀个注释类。
@Resource:按名称装配区别:@Resource默认按照名称⽅式进⾏bean匹配,@Autowired默认按照类型⽅式进⾏bean匹配@Resource(importjavax.annotation.Resource;)是J2EE的注解,@Autowired(importorg.springframework.beans.factory.annotation.Autowired;)是Spring的注解@Configuration:注解在类上,表⽰这是⼀个IOC容器,相当于spring的配置⽂件,java配置的⽅式。
IOC容器的配置类⼀般与@Bean 注解配合使⽤,⽤@Configuration 注解类等价与 XML 中配置 beans,⽤@Bean 注解⽅法等价于 XML 中配置 bean。
【微框架】之一:从零开始,轻松搞定SpringCloud微服务系列--开山篇(spring。。。

【微框架】之⼀:从零开始,轻松搞定SpringCloud微服务系列--开⼭篇(spring。
Spring顶级框架有众多,那么接下的篇幅,我将重点讲解SpringCloud微框架的实现Spring 顶级项⽬,包含众多,我们重点学习⼀下,SpringCloud项⽬以及SpringBoot项⽬————————————————————main————————————————————⼀、SpringCloud项⽬简介 Spring Cloud: 微服务⼯具包,为开发者提供了在分布式系统的配置管理、服务发现、断路器、智能路由、微代理、控制总线等开发⼯具包。
Spring Boot: 旨在简化创建产品级的 Spring 应⽤和服务,简化了配置⽂件,使⽤嵌⼊式web服务器,含有诸多开箱即⽤微服务功能 可以和spring cloud联合部署。
⼆、SpringCloud⼦项⽬介绍 Spring Cloud Config:配置管理开发⼯具包,可以让你把配置放到远程服务器,⽬前⽀持本地存储、Git以及Subversion。
Spring Cloud Bus:事件、消息总线,⽤于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。
Spring Cloud Netflix:针对多种Netflix组件提供的开发⼯具包,其中包括Eureka、Hystrix、Zuul、Archaius等。
Netflix Eureka:云端负载均衡,⼀个基于 REST 的服务,⽤于定位服务,以实现云端的负载均衡和中间层服务器的故障转移。
Netflix Hystrix:容错管理⼯具,旨在通过控制服务和第三⽅库的节点,从⽽对延迟和故障提供更强⼤的容错能⼒。
Netflix Zuul:边缘服务⼯具,是提供动态路由,监控,弹性,安全等的边缘服务。
Netflix Archaius:配置管理API,包含⼀系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。
Spring技术内幕:深入解析Spring架构与设计原理

Spring技术内幕深入解析Spring架构与设计原理(一)引子缘起已经很久没有写帖子了,现在总算是有点时间写些东西,也算是对自己的一个记录吧。
刚刚完成了一个软件产品,从概念到运营都弄了一下,正在推广当中,虽然还没有能够达到盈亏平衡,但是这个过程,对自己也算是一种历练。
先不管结果如何,好呆走过这么一遭了。
我打算用这个帖子,把自己在这个过程中的一些心得,特别是对Spring新的理解,记录下来。
使用这个帖子的标题,持续下来。
简单来说,自己的软件产品是一个基于互联网的SaaS协同软件平台,操作简单,支持流程定义,管理和多种客户端 -像短信,MSN,智能手机什么的(我这里就不多做什么广告了),也有一个企业版的版本,使用的技术框架是Hibernate + Spring + Wicket,下面是Linux和MySQL,还有云计算的平台的使用,以支持其扩展性,虽然现在还没有可扩展性的需求,但似乎不难从SaaS上,就会想到云计算, 其实,它们真的是天生的一对!关于云计算,自己对这个技术很感兴趣,觉得和开源软件的结合,是很有意思的,因为它们都有基于服务的基因,在云计算平台的使用上,也有一些初步的实践。
云计算是一个很有意思的话题,但在这里主要是想谈Spring,所以对云计算,这里就先不多说了,但非常欢迎有兴趣的朋友和一起另外找地方讨论!回到正题,在我自己的产品中,其中除了Wicket和云计算外,其他都是大家非常熟知的了,像Hibernate, Spring, MySQL什么的。
在这个过程中,发现自己对一些技术点也有了新的认识,最有体会的是Spring。
当然,在这个过程中,更大的收获是对产品开发整个过程的认识,在这点上,真是一言难尽........回到自己还算了解的Spring, 这次我使用的是3.0的代码,所以,有机会也把这些代码读了几遍,比原来的理解要加深了许多,也发现了不少和2.0代码不同的地方,以及自己一些对 Spring的新的理解,这些,就让我就用这个帖子系列,给自己总结一下,也算是对自己以前的那个代码分析的帖子做一个新的交代吧。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.获取Spring framework jar包
从官网下载spring 最新的相关jar包,官网download地址/spring-community-download
打开网页找到
然后会要求填写些相关基本信息
打开了
发现最新的是spring 3.2 ,那就下它了
下载完成后会发现三个目录,命名很明确。
Docs目录相关文档。
包括一份API和一份各种spring的使用说明(reference),reference提供了HTML.PDF版本,非常详细。
2.搭建第一个用到spring依赖注册的程序
直接用eclipse建立一个JAVA项目
然后添加spring的jar包引入
spring-core-3.2.0.M1.jar 核心依赖jar包
spring-context-3.2.0.M1.jar Spring容器包
spring-beans-3.2.0.M1.jar Spring beans的管理包
spring-asm-3.2.0.M1.jar Spring
注:和hibernate一起用时这个JAR会冲突,解决方法删掉它就是了
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Invocation of init method failed; nested exception is ng.NoSuchMethodError:
org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
Caused by:
ng.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V spring-expression-3.2.0.M1.jar
除此之外,还有需要一个Apache common的JAR包
注:如果忘记添加会commons-logging-1.1.1.jar报错
Exception in thread "main" ng.NoClassDefFoundError:
org/apache/commons/logging/LogFactory
关于Apache的common有很多子项目。
非常有用,可以去/这里下载,现在只需要一个日志的,找到logging项目,下载最新版本就OK了
commons-logging-1.1.1.jar 日志记录
全部关联如下:
3.配置XML
Spring 的最大的作用就是提供bean的管理功能,在spring中bean的管理是通过XML实现的,要
用此功能,需要把bean配置到spring的xml
1.新建立一个xml.名字任意,如applicationContext.xml,或者 text.xml都可以
2.添加xml头定义
<?xml version="1.0"encoding="utf-8"?>
<beans xmlns=/schema/beans①
xsi:schemaLocation=
"/schema/beans ②
/schema/beans/spring-beans-3.2.xsd ③
">
<bean>
</bean>
</beans>
① Xmlns(XML NameSpace) 声明命名空间,建议是用网址做命名空间,但并不会去访问改网址,
仅仅是namespace和xsd(xsd是spring这个xml的schema文件,里面定义配置内容)里
声明的targetNamespace保持一致 .
注:这里命名空间是改不了的,其实是在代码中也写死了,可以打开spring-beans-
3.2.0.M1-sources.jar包的
org\springframework\beans\factory\xml\BeanDefinitionParserDelegate.java查看对
/schema/beans这个namespace的定义。
②schemaLoacation .用于绑定命名空间的schema文件,通常是用URL值对,中间用空格隔
开,前面URL是命名空间,后面URL为schema的文件地址
③xsd的存放地址,如果没有声明,eclipse会去网上下载.
在创建xml时,在eclipse编辑xml配置没有提示。
可以对eclipse中进行schema文件的添加
具体是
Windows Preferences ,搜索XML catalog,添加schema文件。
Spring 的schema文件在下载包里有,找到spring-3.2.0.M1\schema\beans\spring-beans-3.2.xsd 然后添加,编写spring配置文件就能有提示了
4.依赖注入
新建一个class用于注入,
package org.beans;
public class Test {
public void say(){
System.out.println("welcome");
}
}
把类通过xml配置注入
<?xml version="1.0"encoding="utf-8"?>
<beans xmlns="/schema/beans"
xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-3.2.xsd"> <bean id="test"class="org.beans.Test"/>
</beans>
测试:
package org.beans;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class testBeans {
public static void main(String[] args) {
ApplicationContext ctx = new
ClassPathXmlApplicationContext("test.xml");
Test test=(Test) ctx.getBean("test");
test.say();
}
}
到此一个spring支持的开放环境就搭好了,非常简洁,需要用到spring其它功能时添加相应JAR包就是了。