{"id":26980169,"url":"https://github.com/clovu/ssm_integration","last_synced_at":"2025-04-03T14:30:21.018Z","repository":{"id":154891743,"uuid":"397031431","full_name":"clovu/ssm_Integration","owner":"clovu","description":"ssm整合源码","archived":false,"fork":false,"pushed_at":"2021-08-17T00:43:21.000Z","size":13244,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-10T06:29:14.162Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/clovu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-08-17T00:42:08.000Z","updated_at":"2021-08-17T00:43:24.000Z","dependencies_parsed_at":"2023-07-30T08:31:04.361Z","dependency_job_id":null,"html_url":"https://github.com/clovu/ssm_Integration","commit_stats":null,"previous_names":["clovu/ssm_integration"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clovu%2Fssm_Integration","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clovu%2Fssm_Integration/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clovu%2Fssm_Integration/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clovu%2Fssm_Integration/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/clovu","download_url":"https://codeload.github.com/clovu/ssm_Integration/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247018213,"owners_count":20869974,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-04-03T14:30:20.426Z","updated_at":"2025-04-03T14:30:21.004Z","avatar_url":"https://github.com/clovu.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 导包\n\n整的的第一步...先导包\n\n- Spring\n\n  ```\n  AOP增强\n  com.springsource.net.sf.cglib-2.2.0.jar\n  com.springsource.org.aopalliance-1.0.0.jar\n  com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar\n  \n  AOP核心\n  spring-aspects-4.0.0.RELEASE.jar\n  \n  IOC核心包\n  commons-logging-1.1.3.jar\n  spring-aop-4.0.0.RELEASE.jar\n  spring-beans-4.0.0.RELEASE.jar\n  spring-context-4.0.0.RELEASE.jar\n  spring-core-4.0.0.RELEASE.jar\n  spring-expression-4.0.0.RELEASE.jar\n  spring-tx-4.0.0.RELEASE.jar\n  \n  测试核心包\n  spring-test-4.0.0.RELEASE.jar\n  \n  JDBC核心包\n  spring-jdbc-4.0.0.RELEASE.jar\n  spring-orm-4.0.0.RELEASE.jar\n  ```\n\n\n\n- SpringMVC\n\n  ```\n  MVC核心包\n  spring-web-4.0.0.RELEASE.jar\n  spring-webmvc-4.0.0.RELEASE.jar\n  \n  文件上传下载 核心包\n  commons-io-2.0.jar\n  commons-fileupload-1.2.1.jar\n  \n  JSR303校验核心包\n  hibernate-validator-annotation-processor-5.0.3.Final.jar\n  hibernate-validator-cdi-5.0.3.Final.jar\n  hibernate-validator-5.0.3.Final.jar\n  classmate-1.0.0.jar\n  jboss-logging-3.1.1.GA.jar\n  validation-api-1.1.0.Final.jar\n  \n  jstl-jsp标准标签库\n  jstl.jar\n  standard.jar\n  \n  ajax/JSON支持\n  jackson-databind-2.1.5.jar\n  jackson-core-2.1.5.jar\n  jackson-annotations-2.1.5.jar\n  ```\n\n\n\n- MyBatis\n\n  ```\n  MyBatis核心包\n  mybatis-3.4.1.jar\n  \n  日志框架\n  log4j-1.2.17.jar\n  slf4j-log4j12-1.7.30.jar\n  slf4j-api-1.7.30.jar\n  \n  MyBatis与Spring整合包\n  mybatis-spring-1.3.0.jar\n  ```\n\n\n\n- 其他\n\n  ```\n  数据库驱动\n  mysql-connector-java-8.0.21.jar\n  \n  数据源\n  c3p0-0.9.1.2.jar\n  ```\n\n\n\n# 配置\n\n\n\n## Spring\n\n\n\n### web.xml\n\n启动Spring容器，在web.xml文件中配置Spring容器：\n\n```xml\n\u003c!--  启动Spring 容器 --\u003e\n\u003ccontext-param\u003e\n  \u003cparam-name\u003econtextConfigLocation\u003c/param-name\u003e\n  \u003c!--  指定配置文件位置  --\u003e\n  \u003cparam-value\u003eclasspath:spring-config.xml\u003c/param-value\u003e\n\u003c/context-param\u003e\n\u003clistener\u003e\n  \u003clistener-class\u003eorg.springframework.web.context.ContextLoaderListener\u003c/listener-class\u003e\n\u003c/listener\u003e\n```\n\n### 自动包扫描\n\n在`spring-config.xml` 开启自动包扫描，Spring不需要接管`Controller`\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003cbeans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd\n                           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd\"\u003e\n  \u003c!--  自动包扫描  --\u003e\n  \u003ccontext:component-scan base-package=\"top.ctong.ssm\"\u003e\n    \u003c!--  排除Controller注解标注的类 --\u003e\n    \u003ccontext:exclude-filter type=\"annotation\" expression=\"org.springframework.stereotype.Controller\"/\u003e\n  \u003c/context:component-scan\u003e\n\u003c/beans\u003e\n```\n\n\n\n### 配置数据源\n\n```xml\n\u003c!--  导入jdbc配置文件  --\u003e\n\u003ccontext:property-placeholder location=\"jdbc.properties\"/\u003e\n\n\u003c!--  配置c3p0数据源  --\u003e\n\u003cbean id=\"comboPooledDataSource\" class=\"com.mchange.v2.c3p0.ComboPooledDataSource\"\u003e\n  \u003cproperty name=\"user\" value=\"${jdbc.user}\"/\u003e\n  \u003cproperty name=\"password\" value=\"${jdbc.pass}\"/\u003e\n  \u003cproperty name=\"jdbcUrl\" value=\"${jdbc.url}\"/\u003e\n  \u003cproperty name=\"driverClass\" value=\"${jdbc.driver}\"/\u003e\n\u003c/bean\u003e\n```\n\n`jdbc.properties` 配置文件\n\n```properties\njdbc.user=root\njdbc.pass=123\njdbc.database=mybatis\njdbc.driver=com.mysql.cj.jdbc.Driver\njdbc.url=jdbc:mysql://localhost:3306/mybatis\n```\n\n\n\n### 事务控制\n\n配置事务管理器，让他控制住数据源里面的连接的关闭和提交\n\n```xml\n\u003c!--  配置事务控制  --\u003e\n\u003cbean id=\"dataSourceTransactionManager\" class=\"org.springframework.jdbc.datasource.DataSourceTransactionManager\"\u003e\n  \u003cproperty name=\"dataSource\" ref=\"comboPooledDataSource\"/\u003e\n\u003c/bean\u003e\n```\n\n配置事务切面\n\n```xml\n\u003c!--  事务增强、事务属性、事务建议\n  - transaction-manager：指定事务管理器\n  --\u003e\n\u003ctx:advice id=\"myTx\" transaction-manager=\"dataSourceTransactionManager\"\u003e\n  \u003c!--  配置事务属性  --\u003e\n  \u003ctx:attributes\u003e\n    \u003c!--  任何方法发生异常就回滚\n\t   - rollback-for: 触发指定异常时回滚\n  \t --\u003e\n    \u003ctx:method name=\"*\" rollback-for=\"java.lang.Exception\"/\u003e\n    \u003c!--  get开头的方法设置只读，可优化性能  --\u003e\n    \u003ctx:method name=\"get*\" read-only=\"true\"/\u003e\n  \u003c/tx:attributes\u003e\n\u003c/tx:advice\u003e\n\n\u003c!--  基于xml配置，配置事务  --\u003e\n\u003caop:config\u003e\n  \u003caop:pointcut id=\"txPoint\" expression=\"execution(* top.ctong.ssm.service..*(..))\" /\u003e\n  \u003caop:advisor advice-ref=\"myTx\" pointcut-ref=\"txPoint\" /\u003e\n\u003c/aop:config\u003e\n```\n\n\n\n\n\n## SpringMVC\n\n\n\n### web.xml\n\n在`web.xml` 中配置SpringMVC前端控制器\n\n```xml\n\u003c!--  配置SpringMVC前端控制器  --\u003e\n\u003cservlet\u003e\n  \u003cservlet-name\u003edispatcherServlet\u003c/servlet-name\u003e\n  \u003cservlet-class\u003eorg.springframework.web.servlet.DispatcherServlet\u003c/servlet-class\u003e\n  \u003cinit-param\u003e\n    \u003cparam-name\u003econtextConfigLocation\u003c/param-name\u003e\n    \u003cparam-value\u003eclasspath:springmvc-config.xml\u003c/param-value\u003e\n  \u003c/init-param\u003e\n\u003c/servlet\u003e\n\u003cservlet-mapping\u003e\n  \u003cservlet-name\u003edispatcherServlet\u003c/servlet-name\u003e\n  \u003curl-pattern\u003e/\u003c/url-pattern\u003e\n\u003c/servlet-mapping\u003e\n```\n\n在`web.xml` 中配置字符编码\n\n```xml\n\u003c!--  字符编码  --\u003e\n\u003cfilter\u003e\n  \u003cfilter-name\u003echaracterEncodingFilter\u003c/filter-name\u003e\n  \u003cfilter-class\u003eorg.springframework.web.filter.CharacterEncodingFilter\u003c/filter-class\u003e\n  \u003cinit-param\u003e\n    \u003cparam-name\u003eencoding\u003c/param-name\u003e\n    \u003cparam-value\u003eutf-8\u003c/param-value\u003e\n  \u003c/init-param\u003e\n  \u003cinit-param\u003e\n    \u003cparam-name\u003eforceEncoding\u003c/param-name\u003e\n    \u003cparam-value\u003etrue\u003c/param-value\u003e\n  \u003c/init-param\u003e\n\u003c/filter\u003e\n\u003cfilter-mapping\u003e\n  \u003cfilter-name\u003echaracterEncodingFilter\u003c/filter-name\u003e\n  \u003curl-pattern\u003e/*\u003c/url-pattern\u003e\n\u003c/filter-mapping\u003e\n```\n\n配置REST风格过滤器\n\n```xml\n\u003c!--  REST风格  --\u003e\n\u003cfilter\u003e\n  \u003cfilter-name\u003ehiddenHttpMethodFilter\u003c/filter-name\u003e\n  \u003cfilter-class\u003eorg.springframework.web.filter.HiddenHttpMethodFilter\u003c/filter-class\u003e\n\u003c/filter\u003e\n\u003cfilter-mapping\u003e\n  \u003cfilter-name\u003ehiddenHttpMethodFilter\u003c/filter-name\u003e\n  \u003curl-pattern\u003e/\u003c/url-pattern\u003e\n\u003c/filter-mapping\u003e\n```\n\n### 自动包扫描\n\n在`springmvc-config.xml`开启自动包扫描，需要禁用默认行为，因为默认行为是全包扫描，SpringMVC只需要接管Controller类\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003cbeans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd\n                           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd\"\u003e\n  \u003c!--  开启自动包扫描，禁用默认行为  --\u003e\n  \u003ccontext:component-scan base-package=\"top.ctong.ssm\" use-default-filters=\"false\"\u003e\n    \u003c!--  接管被Controller接管的类  --\u003e\n    \u003ccontext:include-filter type=\"annotation\" expression=\"org.springframework.stereotype.Controller\"/\u003e\n  \u003c/context:component-scan\u003e\n\u003c/beans\u003e\n```\n\n### 资源访问配置\n\n防止静态或动态资源失效。加上这两个配置\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003cbeans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:context=\"http://www.springframework.org/schema/context\"\n       xmlns:mvc=\"http://www.springframework.org/schema/mvc\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd\n                           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd\n                           http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd\"\u003e\n  \u003c!--  静态资源映射  --\u003e\n  \u003cmvc:default-servlet-handler/\u003e\n  \u003c!--  动态资源映射  --\u003e\n  \u003cmvc:annotation-driven/\u003e\n\u003c/beans\u003e\n```\n\n### 文件上传解析器\n\n```xml\n\u003c!--  文件上传解析器  --\u003e\n\u003cbean id=\"multipartResolver\"\n      class=\"org.springframework.web.multipart.commons.CommonsMultipartResolver\"\u003e\n  \u003c!--  最大内存大小  --\u003e\n  \u003cproperty name=\"maxUploadSize\" value=\"#{1024 * 1024 * 100}\"/\u003e\n  \u003c!--  单文件最大内存大小--\u003e\n  \u003cproperty name=\"maxInMemorySize\" value=\"#{1024 * 1024 * 10}\"/\u003e\n  \u003c!-- 默认编码格式--\u003e\n  \u003cproperty name=\"defaultEncoding\" value=\"utf-8\"/\u003e\n\u003c/bean\u003e\n```\n\n\n\n## MyBatis\n\n在`spring-config.xml`配置文件中整合Mybatis\n\n```xml\n\u003c!--  整合MyBatis, SqlSessionFactoryBean可以根据配置文件得到SqlSessionFactory  --\u003e\n\u003cbean id=\"sqlSessionFactoryBean\" class=\"org.mybatis.spring.SqlSessionFactoryBean\"\u003e\n  \u003c!--  配置文件位置  --\u003e\n  \u003cproperty name=\"configLocation\" value=\"classpath:mybatis-config.xml\"/\u003e\n  \u003c!--  数据源  --\u003e\n  \u003cproperty name=\"dataSource\" ref=\"comboPooledDataSource\"/\u003e\n  \u003c!--  xml映射文件路径  --\u003e\n  \u003cproperty name=\"mapperLocations\" value=\"classpath:mapper/*.xml\"/\u003e\n\u003c/bean\u003e\n\n\u003c!--  把每个Dao接口的\"实例\"加入到IOC  --\u003e\n\u003cbean class=\"org.mybatis.spring.mapper.MapperScannerConfigurer\"\u003e\n  \u003c!--  指定Dao接口所在的包  --\u003e\n  \u003cproperty name=\"basePackage\" value=\"top.ctong.ssm.dao\"/\u003e\n\u003c/bean\u003e\n```\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclovu%2Fssm_integration","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclovu%2Fssm_integration","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclovu%2Fssm_integration/lists"}