46岁程序员被互联网公司辞退,搭建SSM项目框架全过程及思考

2021/8/7 20:06:33

本文主要是介绍46岁程序员被互联网公司辞退,搭建SSM项目框架全过程及思考,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

项目选用Spring为基础框架,由于目前项目中采用的是Hibernate(在多表关联查询方面以及复杂的统计计算方面,同时要兼顾性能的时候吃了不少苦头),所以这里采取Mybatis做持久化框架(没实战搭建过),Spring MVC框架。在权限控制方面现有项目中采用的是shiro(为了学习,这里使用spring security)。其他的细节问题会在下面各小节中叙述。

另说明一点的是操作系统是mac。

github项目源码在https://github.com/sjlian/sjlian 欢迎clone并提出意见。

2. 创建mvn项目、完善目录结构


首先安装和配置环境,主要包括jdk、mysql、maven等,其他如redis、nginx、ActiveMQ等在初始版本还暂时没上传和使用。这些入门知识不再赘述。

在idea上新建一个mvn项目,然后有一个create from archetype,里面有很多选项,于是有个疑问到底用哪个呢?遂逐一查看名字,看到mvn-archetypr-webapp,听名字就觉得和自己的预期是一样的啊,于是果断选择。期间又试了下其他的各个archetype,发现这这是一个模板,可以根据自己需要选择,也可以默认缺省的。这里附上mvn官方标准化的目录结构如下图:

一个好的程序员都善于用命令行的方式解决问题,于是思考怎么用mvn命令行创建项目。最简单的方式就是mvn archetype:generate,这个命令是默认的 archetype,如果需要生成特定模板的项目呢?从maven的Repository里查找arche types发现有几百个,我们平时用的也就那么几个,由于太多就变得很不方便起来,于是搜索资料,查到 http://maven.40175.n5.nabble.com/archetype-catalog-xml-location-archetype-crawl-versus-archetype-generate-td113741.html

完善目录结构大致如上图(是demo最终版本),这个时候只需要在java目录下新建几个包,进行分层,使项目结构变得清晰。

common主要放置一些通用的非工具类,如exception相关,结果相关,拦截器,servlet,VO类等。

Controller、DAO、model、service顾名思义,分别是控制层、持久层、数据模型层、业务处理层。

util主要存放各种工具类,例如字符串、时间、poi、邮件、ip等

resource主要是配置文件,包括spring相关配置文件、mybatis配置文件、mybatis映射文件、日志配置文件等

web-inf下最重要是web.xml,作为启动需要首先加载的文件,引入其他配置文件、配置listener、servlet、filter、Interceptor等。

其他是和前端相关文件

test是和测试相关。

建好以上目录,开始进入正题。

3. 引入Spring


3.1 web.xml

web程序启动会去读取它的配置文件 web.xml,首先需要配置web.xml,添加上spring的监听器、spring mvc的Servlet。

ContextLoaderListener 它实现了ServletContextListener这个接口,在web.xml配置这个监听器,启动容器时,就会默认执行它实现的方法。在ContextLoaderListener中关联了ContextLoader这个类,所以整个加载配置过程由ContextLoader来完成。

RequestContextListener implements ServletRequestListener,监听用户的请求,用于日志系统,不是必需的。

IntrospectorCleanupListener监听器主要用于解决java.beans.Introspector导致的内存泄漏的问题(Quartz,Struts),如果没有struts和quartz不是必需的。

Spring MVC 以自启动servlet的形式加载,同时引入相关spring/spring-mvc.xml配置文件。文件路径classpath:开头,从classpath加载,否则尝试URL,如果失败,调用 getResourceByPath。

此外,为了防止中文乱码,需要encodingFilter;设置session超时时间、用户自定义Listener、servlet、filter、interceptor等。

3.2 pom.xml

直接把Listener复制到xml中,会发现ide并不识别,是因为相关依赖还没有导入项目中的原因。 在pom.xml中引入spring相关,引入的时候会发现depency有一些属性值,如groupId、artifactId等,对于开源项目来说,这两项是固定的,按照文档导入即可,version是版本号,为了便于升级和管理,建议版本号统一配置。

有时候会发现还有scope属性,如junit的scope属性值是test用于test任务时使用;compile(default)编译时使用;provided类似于编译但支持你期待jdk或者容器提供,类似于classpath;runtime在执行时需要使用;system需要外在提供相应得元素。通过systemPath来取得;

有时候会遇到依赖冲突,例如同时导入了A、B包,但是A包又引用了B包,当版本不一致时就会冲突,解决方式是mvn dependency:tree 分析冲突的包,然后在相应的A包中配置<exclusions> 把B包排除在外。

如果想引入本地依赖,1、使用scope system和systemPath指向依赖包;2、mvn install命令进行安装并配置group和artifact,然后直接引入。3、建立pom依赖关系。POM关系主要为依赖,继承,合成,在这个小项目中用不到,且不是重点,故略去。

3.3 其他配置文件

spring-mvc.xml主要配置如下。

1.开启注解模式就可以使用注解方式@ResponseBody,@RequestMapping等。

2.对于静态的jpg、css等不需要通过mvc。

3.添加前后缀,注意路径。

4.扫描controller的bean,让spring知道哪些是controller(@Controller)。

如果需要对返回值进行json统一化处理,在这里可以引入json处理,如fastJson、jackson等。fastJson轻量级速度快,但是支持有轻微漏洞,jackson灵活性好,但是比较笨重,这里选用的是fastJson,配置如下。

如果需要上传文件,还需要配置文件上传,如下:

web.xml中引入配置文件,该配置文件作为spring基础配置文件,再引入其他文件。

spring.xml中配置如下,这里注入service、引入mybatis、security配置,配置事务管理、开启声明是式事务(@transtraction)。

4.引入Mybatis


4.1 文件配置

在spring.xml中引入了spring-mybatis.xml,用于Mybatis和spring的整合配置。同时pom.xml中引入相关依赖。

1.配置数据源,数据库连接池,可以选择的有c3p0、druid、dbcp、HikariCP等,这里选择阿里的开源框架druid,配置如下。url、username等建议写在property文件中。

2. 配置sessionFactory, 引入mybatis全局配置文件、entity使用别名,扫描mapping.xml

3. 配置DAO接口,注入Srping容器中。

  1. 配置mybatis-config.xml

5. mvc层搭建


5.1 DAO层

atis全局配置文件、entity使用别名,扫描mapping.xml

3. 配置DAO接口,注入Srping容器中。

[外链图片转存中…(img-leGi2s5p-1628337138840)]

  1. 配置mybatis-config.xml

[外链图片转存中…(img-D74iDmPA-1628337138840)]

5. mvc层搭建


5.1 DAO层



这篇关于46岁程序员被互联网公司辞退,搭建SSM项目框架全过程及思考的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程