首先回顧了傳統SSM開發步驟,介紹了項目實現過程,從需求分析、設計、編碼到測試的流程。展示了一個簡單的員工信息管理功能,並提供了環境搭建及相關依賴配置的詳細代碼和配置。接著,提出了SSM開發存在的問題,如配置繁瑣和版本相容性。第二章介紹了Spring Boot的引言,解釋了Spring Boot的概... ...
第一章、傳統SSM開發回顧以及問題
Spring + SpringMVC + Mybatis SSM 實現一個簡單功能 員工添加、查詢…
SSM項目簡單實現
-
項目
需求分析 —>概要設計 —>(庫表設計) —> 詳細設計 —>(驗證庫表正確性) —> 編碼(環境搭建+業務代碼)—>測試 —>部署上線
這是一般整個項目的開發步驟,但是我們選擇簡單項目實現
-
功能:員工添加、查詢所有
選擇mysql資料庫,庫:ssm,表:emp,欄位:id name birthday salary
-
編碼
sql建庫建表
create DATABASE ssm; use ssm; create TABLE emp( id int(11) auto_increment PRIMARY KEY, name VARCHAR(40), birthday TIMESTAMP, salary DOUBLE )
環境搭建 引入依賴
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <!--spring--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.3.6</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>5.3.6</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>5.3.6</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.3.6</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>5.3.6</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.3.6</version> </dependency> <!--springmvc--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.6</version> </dependency> <!--mybatis--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.9</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>3.0.0</version> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <!--druid--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.19</version> </dependency> <!--aspect--> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.8.8</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.3</version> </dependency> <!--jackson 轉換json--> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.14.2</version> </dependency> </dependencies>
spring.xml
<!--開啟註解掃描--> <context:component-scan base-package="com.baizhi.service"/> <!--創建數據源--> <bean class="com.alibaba.druid.pool.DruidDataSource" id="dataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/ssm?characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="123456"/> </bean> <!--創建sqlSessionFactory--> <bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSessionFactory"> <property name="dataSource" ref="dataSource"/> <property name="mapperLocations" value="classpath:com.baizhi.mapper/*.xml"/> <property name="typeAliasesPackage" value="com.baizhi.entity"/> </bean> <!--創建DAO--> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> <property name="basePackage" value="com.baizhi.dao"/> </bean> <!--創建事務管理器--> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!--開啟註解事務生效--> <tx:annotation-driven/>
Mapper配置文件
<!--useGeneratedKeys:開啟自動生成主鍵,keyProperty:讓該欄位自動生成主鍵; 該功能僅MySQL支持--> <insert id="save" parameterType="Emp" useGeneratedKeys="true" keyProperty="id"> INSERT into emp values(#{id},#{name},#{birthday},#{salary}) </insert> <select id="findAll" resultType="com.baizhi.entity.Emp"> select id,name,birthday,salary from emp </select>
@Service @Transactional public class EmpServiceImpl implements EmpService { private final EmpDAO empDAO; @Autowired public EmpServiceImpl(EmpDAO empDAO) { this.empDAO = empDAO; } @Override public void save(Emp emp) { empDAO.save(emp); } @Override public List<Emp> findAll() { return empDAO.findAll(); } }
一步一步來,先測試Spring+Mybatis:
public class TestEmpServiceImpl { public static void main(String[] args) { //1.運行工廠 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml"); //2.工廠中獲取對象 EmpService empService = (EmpService) context.getBean("empServiceImpl"); empService.save(new Emp(null, "小米", new Date(), 44.564)); //3.調用方法 empService.findAll().forEach(emp -> System.out.println(emp)); } }
可以正常執行,進入下一步mvc的整合,springmvc.xml
<!--開啟註解掃描--> <context:component-scan base-package="com.baizhi.controller"/> <!--開啟mvc註解驅動--> <mvc:annotation-driven/> <!--配置視圖解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"/> <property name="suffix" value=".jsp"/> </bean>
web.xml
<!-- 載入spring.xml--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring.xml</param-value> </context-param> <!--配置spring工廠啟動--> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!--配置springmvc--> <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> <url-pattern>/</url-pattern> </servlet-mapping>
控制器
@RestController //代表類中返回值轉為json響應到瀏覽器 public class EmpController { private final EmpService empService; @Autowired public EmpController(EmpService empService) { this.empService = empService; } //保存 @RequestMapping("save") public void save(Emp emp) { empService.save(emp); } //查詢所有 @RequestMapping("findAll") public List<Emp> findAll() { return empService.findAll(); } }
測試結果,可以正常添加和查詢所有
現有SSM開發存在問題
- 配置繁瑣:SSM框架需要進行大量的配置,包括XML配置文件、註解配置、依賴註入等。這些配置可能會變得繁瑣,以及maven配置的冗餘代碼。
- 版本相容性:maven引入的庫,他們的版本必須一致,否則產生版本不相容的問題
第二章、Spring Boot的引言
2.1 Spring Boot是什麼
Spring Boot是由Pivotal團隊提供的一套開源框架,Spring Boot的目標是讓開發者更多地關註業務特性。它通過自動配置來簡化開發流程,例如,當檢測到Spring MVC在類路徑上時,Spring Boot會自動添加必要的bean,該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。
Spring Boot 作用:簡化Spring應用初始搭建和開發過程
如何簡化:開發使用SpringBoot只要基於特定方式進行配置,就可以簡化Spring使用
SpringBoot 微框架:5分鐘完成之前ssm中的項目搭建,大大提高開發效率
SpringBoot (微框架)= SpringMVC(控制器) + Spring core(項目管理)
2.2 Spring Boot的優勢
- 創建完整獨立的Spring應用程式 ,只有一個容器;父子容器間的問題不存在。
- 嵌入的Tomcat,無需部署WAR文件 應用跑在內嵌伺服器
- 簡化Maven配置,自動配置Spring,沒有XML配置
2.3 Spring Boot的約定
- SpringBoot遵循“約定優於配置”的原則,提供了一些預設的約定必須遵守,以簡化項目的配置和開發流程:
- 入口類:Spring Boot 項目必須設置入口類,通常位於項目的根目錄下,命名為
Application
或Main
,並且使用@SpringBootApplication
註解進行標記。 - 配置文件:Spring Boot 必須在項目根目錄存在一個名為application.properties或application.yml的配置文件。這些配置文件通常位於 src/main/resources 目錄下。
- 項目結構:Spring Boot 項目通常採用標準的 Maven 或 Gradle 項目結構,主要包括 src 目錄、main 目錄和 test 目錄。主要的 Java 代碼文件通常位於 src/main/java 目錄下,資源文件位於 src/main/resources 目錄下。
- 入口類:Spring Boot 項目必須設置入口類,通常位於項目的根目錄下,命名為
作者:揚眉劍出鞘
出處: https://www.cnblogs.com/eyewink/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。