spring boot 项目实战

本文介绍如何使用 Spring Boot 框架快速搭建一个具备基本 CRUD 功能的应用,包括项目搭建、配置、日志管理及环境配置等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

 

1.创建maven项目 修改pom文件如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.xue</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>demo</name>
	<description>Demo project for Spring Boot</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.9.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.7</java.version>
	</properties>

	<dependencies>
		<!-- 核心模块,包括自动配置支持、日志和YAML -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>

		<!-- 测试模块,包括JUnit、Hamcrest、Mockito。 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		
		<!-- web -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
		<dependency>
	        <groupId>org.springframework.boot</groupId>
	        <artifactId>spring-boot-starter-web</artifactId>
	 	</dependency>
	 	
	   <!-- CXF webservice -->
		<dependency>
			<groupId>org.apache.cxf</groupId>
			<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
			<version>3.1.11</version>
		</dependency>
		<!-- CXF webservice -->
		<!-- mysql start -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<!-- mysql end -->
		
		<!-- httpclient start -->
		<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpclient</artifactId>
			<version>4.5</version>
		</dependency>
		
		<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpcore</artifactId>
			<version>4.4.1</version>
		</dependency>
		<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>fluent-hc</artifactId>
			<version>4.3.1</version>
		</dependency>
		<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpmime</artifactId>
			<version>4.3.1</version>
			<exclusions>
				<exclusion>
					<groupId>commons-logging</groupId>
					<artifactId>commons-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<!-- httpclient end -->
		<dependency>
			<groupId>commons-lang</groupId>
			<artifactId>commons-lang</artifactId>
			<version>2.0</version>
		</dependency>
	</dependencies>

	<build>
		<finalName>${project.artifactId}</finalName>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
                    <executable>true</executable>
                </configuration>
			</plugin>
		</plugins>
	</build>


</project>

2.项目配置文件



application.properties是主配置文件项目启动时会加载该文件,主要是放公共配置

dev是本地配置,prod是生产环境配置,test是测试环境配置

这样配置的好处是启动时可以默认加载某个配置文件,启动命令如下

java -jar project-name.jar --spring.config.location=/project-name/config/application.properties --spring.profiles.active=dev

application.properties配置如下 

#激活哪一个环境的配置文件
spring.profiles.active=dev
#公共配置
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss:

application-dev.properties配置如下

#端口号
server.port=8080

#数据库连接
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto= update

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/shop?useUnicode=true&autoReconnect=true&failOverReadOnly=false&characterEncoding=UTF-8 
spring.datasource.username=root
spring.datasource.password=admin
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.initialSize=10
spring.datasource.minIdle=10
spring.datasource.maxActive=30
spring.datasource.maxWait=60000
spring.datasource.timeBetweenEvictionRunsMillis=60000
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.validationQuery=SELECT 1 FROM DUAL
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false

application-test.properties配置和application-prod.properties配置如上


3.项目目录结构 如下图


启动类 DemoApplication官方建议放在最外层

4. 日志配置

    

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <!-- <include resource="org/springframework/boot/logging/logback/base.xml" /> -->
  <!--生产环境  -->
  <springProfile name="prod">
    <!-- 将日志记录到文件中 -->
    <appender name="LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
    	<File>back.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        	<!--日志文件输出的文件名-->
            <FileNamePattern>back.%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--日志文件保留天数-->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <Pattern>%-20(%d{yyyy-MM-dd HH:mm:ss.SSS}) [%thread] %-5level %logger{80}.%method - %msg%nn</Pattern>
        </encoder>
    </appender>
    <root level="WARN">
	    <appender-ref ref="LOG"/>
	</root>
</springProfile>

 <!--测试环境  --> 
  <springProfile name="test">
    <!-- 将日志打印到控制台 -->
    <appender name="LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>back.log</File>
      	<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>back.%d{yyyy-MM-dd}.log</FileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <Pattern>%-20(%d{yyyy-MM-dd HH:mm:ss.SSS}) [%thread] %-5level %logger{80}.%method - %msg%n</Pattern>
        </encoder>
    </appender>
    <root level="info">
	    <appender-ref ref="LOG"/>
	</root>
  </springProfile>

 <!--开发环境  -->
  <springProfile name="dev">
    <!-- 将日志打印到控制台 -->
    <appender name="LOG" class="ch.qos.logback.core.ConsoleAppender">
      <encoder>
          <Pattern>%-20(%d{yyyy-MM-dd HH:mm:ss.SSS}) [%thread] %-5level %logger{80}.%method - %msg%n</Pattern>
      </encoder>
    </appender>
    <root level="info">
	    <appender-ref ref="LOG"/>
	</root>
  </springProfile>
  <!-- 下面配置一些第三方包的日志过滤级别,用于避免刷屏 -->  
  <logger name="org.hibernate" level="WARN" />  
  <logger name="org.springframework" level="WARN" />  
  <logger name="org.thymeleaf" level="WARN" />  
  <logger name="org.apache" level="WARN" />  
  <!-- show parameters for hibernate sql 专为 Hibernate 定制 -->  
  <logger name="org.hibernate.type.descriptor.sql.BasicBinder"  level="TRACE" />  
  <logger name="org.hibernate.type.descriptor.sql.BasicExtractor"  level="DEBUG" />  
  <logger name="org.hibernate.SQL" level="DEBUG" />  
  <logger name="org.hibernate.engine.QueryParameters" level="DEBUG" />  
  <logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" /> 
</configuration>
其中 也分 dev  test prod 三个环境的日志,是根据启动那个配置文件就调用 logback-spring.xml 中springProfile对应的日志方式,这也是springboot的方便之处

5. 实战测试

springboot只需要在pom中引入jpa和MySQL依赖就可以实现增删改查

controller 层 

@RestController
public class HelloWorldController {
	@Autowired
	private GoodsRepository  goodsService;
	private final Logger logger = LoggerFactory.getLogger(this.getClass());  
	
    @SuppressWarnings("deprecation")
	@RequestMapping("/hello")
    public String index() {
    	List<Goods> findByName = goodsService.findByName("哈哈");
    	logger.debug("This is a debug message");  
        logger.info("This is an info message");  
        logger.warn("This is a warn message");  
        logger.error("This is an error message");  
        
        logger.info(findByName.toString());  
        return findByName.toString();
    }
}

@RestController 注解 相当于 @Controller 和 @ResponseBody 的二合一  很方便吧

service 层

@Service
public class GoodsService {
	@Autowired(required=true)
	private GoodsRepository  goodsDao;
	public List<Goods> findByName(String name){
		return goodsDao.findByName(name);
	}
}

repository 层 继承 JapRepository 就可以实现基本的crud

@Repository
public interface GoodsRepository extends JpaRepository<Goods, Integer> {	
}
6.启动项目测试


总结,springboot出现的目标就是减少配置文件,轻量级的框架,比如要想集成redis 只需要在pom中加入

依赖,然后直接引入如下

@Autowired

private StringRedisTemplate stringTemplate;

就可以使用redis了,就是这么的方便,是不是瞬间感觉开发简单了好多

项目源码 springboot项目源码

项目示例基于spring boot 最新版本(2.1.9)实现,Spring BootSpring Cloud 学习示例,将持续更新…… 在基于Spring BootSpring Cloud 布微服务开发过程中,根据实际项目环境,需要选择、集成符合项目需求的各种组件和积累各种解决方案。基于这样的背景下,我开源了本示例项目,方便大家快速上手Spring BootSpring Cloud 。 每个示例都带有详细的介绍文档、作者在使用过程中踩过的坑、解决方案及参考资料,方便快速上手为你提供学习捷径,少绕弯路,提高开发效率。 有需要写关于spring bootspring cloud示例,可以给我提issue哦 ## 项目介绍 spring boot demo 是一个Spring BootSpring Cloud的项目示例,根据市场主流的后端技术,共集成了30+个demo,未来将持续更新。该项目包含helloworld(快速入门)、web(ssh项目快速搭建)、aop(切面编程)、data-redis(redis缓存)、quartz(集群任务实现)、shiro(权限管理)、oauth2(四种认证模式)、shign(接口参数防篡改重放)、encoder(用户密码设计)、actuator(服务监控)、cloud-config(配置中心)、cloud-gateway(服务网关)、email(邮件发送)、cloud-alibaba(微服务全家桶)等模块 ### 开发环境 - JDK1.8 + - Maven 3.5 + - IntelliJ IDEA ULTIMATE 2019.1 - MySql 5.7 + ### Spring Boot 模块 模块名称|主要内容 ---|--- helloworld|[spring mvc,Spring Boot项目创建,单元测试](https://github.com/smltq/spring-boot-demo/blob/master/helloworld/HELP.md) web|[ssh项目,spring mvc,过滤器,拦截器,监视器,thymeleaf,lombok,jquery,bootstrap,mysql](https://github.com/smltq/spring-boot-demo/blob/master/web/HELP.md) aop|[aop,正则,前置通知,后置通知,环绕通知](https://github.com/smltq/spring-boot-demo/blob/master/aop/HELP.md) data-redis|[lettuce,redis,session redis,YAML配置,连接池,对象存储](https://github.com/smltq/spring-boot-demo/blob/master/data-redis/HELP.md) quartz|[Spring Scheduler,Quartz,布式调度,集群,mysql持久化等](https://github.com/smltq/spring-boot-demo/blob/master/quartz/HELP.md) shiro|[授权、认证、加解密、统一异常处理](https://github.com/smltq/spring-boot-demo/blob/master/shiro/HELP.md) sign|[防篡改、防重放、文档自动生成](https://github.com/smltq/spring-boot-demo/blob/master/sign/HELP.md) security|[授权、认证、加解密、mybatis plus使用](https://github.com/smltq/spring-boot-demo/blob/master/security/HELP.md) mybatis-plus-generator|[基于mybatisplus代码自动生成](https://github.com/smltq/spring-boot-demo/blob/master/mybatis-plus-generator) mybatis-plus-crud|[基于mybatisplus实现数据库增、册、改、查](https://github.com/smltq/spring-boot-demo/blob/master/mybatis-plus-crud) encoder|[主流加密算法介绍、用户加密算法推荐](https://github.com/smltq/spring-boot-demo/blob/master/encoder/HELP.md) actuator|[autuator介绍](https://github.com/smltq/spring-boot-demo/blob/master/actuator/README.md) admin|[可视化服务监控、使用](https://github.com/smltq/spring-boot-demo/blob/master/admin/README.md) security-oauth2-credentials|[oauth2实现密码模式、客户端模式](https://github.com/smltq/spring-boot-demo/blob/master/security-oauth2-credentials/README.md) security-oauth2-auth-code|[基于spring boot实现oauth2授权模式](https://github.com/smltq/spring-boot-demo/blob/master/security-oauth2-auth-code/README.md) mybatis-multi-datasource|[mybatis、数据库集群、读写离、读库负载均衡](https://github.com/smltq/spring-boot-demo/blob/master/mybatis-multi-datasource) template-thymeleaf|[thymeleaf实现应用国际化示例](https://github.com/smltq/spring-boot-demo/blob/master/template-thymeleaf) mq-redis|[redis之mq实现,发布订阅模式](https://github.com/smltq/spring-boot-demo/blob/master/mq-redis) email|[email实现邮件发送](https://github.com/smltq/spring-boot-demo/blob/master/email) jGit|[java调用git命令、jgit使用等](https://github.com/smltq/spring-boot-demo/blob/master/jGit) webmagic|[webmagic实现某电影网站爬虫示例](https://github.com/smltq/spring-boot-demo/blob/master/webmagic) netty|[基于BIO、NIO等tcp服务器搭建介绍](https://github.com/smltq/spring-boot-demo/blob/master/netty) ### Spring Cloud 模块 模块名称|主要内容 ---|--- cloud-oauth2-auth-code|[基于spring cloud实现oath2授权模式](https://github.com/smltq/spring-boot-demo/blob/master/cloud-oauth2-auth-code) cloud-gateway|[API主流网关、gateway快速上手](https://github.com/smltq/spring-boot-demo/blob/master/cloud-gateway) cloud-config|[配置中心(服务端、客户端)示例](https://github.com/smltq/spring-boot-demo/blob/master/cloud-config) cloud-feign|[Eureka服务注册中心、负载均衡、声明式服务调用](https://github.com/smltq/spring-boot-demo/blob/master/cloud-feign) cloud-hystrix|[Hystrix服务容错、异常处理、注册中心示例](https://github.com/smltq/spring-boot-demo/blob/master/cloud-hystrix) cloud-zuul|[zuul服务网关、过滤器、路由转发、服务降级、负载均衡](https://github.com/smltq/spring-boot-demo/blob/master/cloud-zuul) cloud-alibaba|[nacos服务中心、配置中心、限流等使用(系列示例整理中...)](https://github.com/smltq/spring-boot-demo/blob/master/cloud-alibaba) #### Spring Cloud Alibaba 模块 模块名称|主要内容 ---|--- nacos|[Spring Cloud Alibaba(一)如何使用nacos服务注册和发现](https://github.com/smltq/spring-boot-demo/blob/master/cloud-alibaba/README1.md) config|[Spring Cloud Alibaba(二)配置中心多项目、多配置文件目录实现](https://github.com/smltq/spring-boot-demo/blob/master/cloud-alibaba/README2.md) Sentinel|[Spring Cloud Alibaba(三)Sentinel之熔断降级](https://github.com/smltq/spring-boot-demo/blob/master/cloud-alibaba/README3.md) Dubbo|[Spring Cloud Alibaba(四)Spring Cloud与Dubbo的融合](https://github.com/smltq/spring-boot-demo/blob/master/cloud-alibaba/README4.md) RocketMQ|[Spring Cloud Alibaba(五)RocketMQ 异步通信实现](https://github.com/smltq/spring-boot-demo/blob/master/cloud-alibaba/README5.md) ### 其它 模块名称|主要内容 ---|--- leetcode|[力扣题解目录](https://github.com/smltq/spring-boot-demo/blob/master/leetcode) ## Spring Boot 概述 Spring Boot简化了基于Spring的应用开发,通过少量的代码就能创建一个独立的、产品级别的Spring应用。 Spring BootSpring平台及第三方库提供开箱即用的设置,这样你就可以有条不紊地开始。多数Spring Boot应用只需要很少的Spring配置。 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Sprin
Spring Boot是一个用于快速构建基于Java的应用程序的开源框架。它提供了许多开箱即用的功能和自动化配置,使得开发者可以更专注于业务逻辑的实现而不必花费太多时间和精力在基础设施方面。下面是一个Spring Boot项目实战的步骤: 1. 环境准备: - 安装Java Development Kit (JDK) - 下载并安装一个Java开发集成环境 (IDE),例如Eclipse或IntelliJ IDEA - 下载并安装Maven或Gradle构建工具 2. 创建Spring Boot项目: - 使用IDE创建一个新的Spring Boot项目 - 选择一个适合的项目模板,例如Web应用程序、RESTful服务或数据访问等 3. 配置项目: - 通过修改application.properties或application.yml文件来配置应用程序的属性,例如数据库连接信息、日志级别等 4. 定义实体类: - 创建实体类来映射数据库表格或数据对象 - 使用注解定义实体类的属性和关系 5. 创建数据访问层: - 创建一个Repository接口来定义对实体类的数据库操作方法 - 使用Spring Data JPA或其他ORM框架来实现Repository接口的具体实现 6. 创建业务逻辑层: - 创建一个Service类来实现业务逻辑 - 在Service类中调用Repository接口的方法来实现对数据库的操作 7. 创建控制器层: - 创建一个控制器类来处理HTTP请求和响应 - 使用注解定义控制器类的路由和请求处理方法 8. 运行和测试: - 启动应用程序并测试API的功能和性能 - 可以使用Postman或其他HTTP请求工具来进行API测试 以上是一个简单的Spring Boot项目实战的步骤。当然,具体的项目实战会根据实际需求的复杂程度和功能模块的多少而有所不同。希望这些步骤能够帮助你开始一个成功的Spring Boot项目
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值