Spring Boot的常用注解与配置:快速开发与数据访问!

举报
bug菌 发表于 2025/05/30 17:52:19 2025/05/30
【摘要】 🏆本文收录于「滚雪球学SpringBoot」专栏(全网一个名),手把手带你零基础入门Spring Boot,从入门到就业,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

🏆本文收录于「滚雪球学SpringBoot」专栏(全网一个名),手把手带你零基础入门Spring Boot,从入门到就业,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8

🌱 前言 🚀

  Spring Boot提供了许多注解和配置选项,帮助开发者快速构建应用程序并与各种系统(如数据库、Web服务)集成。本文将介绍Spring Boot中的一些常用注解,如@SpringBootApplication@RestController@RequestMapping,并讲解如何使用application.propertiesapplication.yml配置文件进行配置管理。此外,我们还将探讨如何使用Spring Boot与数据库(如JPA和JDBC)进行集成,轻松实现数据访问。


💡 Spring Boot的常用注解

1. @SpringBootApplication

@SpringBootApplication是Spring Boot应用程序的核心注解,它实际上是一个组合注解,包含了以下三个注解:

  • @Configuration:指示该类为Spring配置类,类似于传统的XML配置文件。
  • @EnableAutoConfiguration:启用Spring Boot的自动配置机制,自动根据项目的依赖和配置进行合理的配置。
  • @ComponentScan:自动扫描当前包及其子包中的组件,并将其注册为Spring Bean。

通常,@SpringBootApplication标注在应用程序的主类上,用来启动Spring Boot应用。

@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

这个注解让你轻松启动一个Spring Boot应用,无需额外的配置。

2. @RestController

@RestController是一个复合注解,结合了@Controller@ResponseBody。它用于构建RESTful Web服务,自动将控制器方法的返回值转化为JSON或XML格式并直接响应给客户端。它适用于创建RESTful API。

@RestController
@RequestMapping("/api")
public class UserController {

    @GetMapping("/users")
    public List<User> getAllUsers() {
        return userService.findAllUsers();
    }
}

在这个例子中,@RestController注解使得UserController类成为一个REST API的控制器,并且返回的User列表会被自动转换为JSON格式。

3. @RequestMapping

@RequestMapping用于将HTTP请求映射到控制器的处理方法上。它可以根据请求的URL、请求方法(GET、POST等)、请求参数等进行映射。@RequestMapping可以应用于类或方法。

@RequestMapping("/hello")
public String sayHello() {
    return "Hello, Spring Boot!";
}

3.1 常用的派生注解:

  • @GetMapping:简化@RequestMapping(method = RequestMethod.GET)的使用。
  • @PostMapping:简化@RequestMapping(method = RequestMethod.POST)的使用。
  • @PutMapping:简化@RequestMapping(method = RequestMethod.PUT)的使用。
  • @DeleteMapping:简化@RequestMapping(method = RequestMethod.DELETE)的使用。
  • @PatchMapping:简化@RequestMapping(method = RequestMethod.PATCH)的使用。

例如:

@GetMapping("/users")
public List<User> getUsers() {
    return userService.getAllUsers();
}

🛠️ 配置文件:application.properties 与 application.yml

Spring Boot使用配置文件来管理应用程序的各种配置,常见的配置文件格式有application.propertiesapplication.yml

1. application.properties

application.properties是Spring Boot的默认配置文件格式,通过键值对的形式进行配置。它简单易读,适合较小的配置需求。

示例:application.properties

# Server port
server.port=8080

# Spring datasource configuration
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=password

2. application.yml

application.yml是YAML格式的配置文件,它比properties文件更具层次感,适合进行复杂的配置。

示例:application.yml

server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: password

YAML格式的application.yml通常用于更复杂的配置场景,因其格式清晰且支持嵌套结构。

配置文件的加载顺序

Spring Boot会自动加载application.propertiesapplication.yml文件,也可以通过@Value@ConfigurationProperties注解来访问配置文件中的属性。

@Value("${server.port}")
private int serverPort;

🏗️ Spring Boot与数据库的集成:使用JPA、JDBC等进行数据访问

Spring Boot与数据库集成非常简便。它支持多种数据访问技术,包括JPA(Java Persistence API)、JDBC、MyBatis等。下面我们介绍如何使用JPA和JDBC与数据库进行集成。

1. 使用JPA进行数据访问

JPA(Java Persistence API)是Java官方的ORM(对象关系映射)标准,Spring Boot提供了非常方便的支持。

1.1 引入依赖

使用JPA时,首先需要添加相关的依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
</dependency>

1.2 配置数据源

application.properties中配置数据库连接:

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=password
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

1.3 创建实体类

创建一个实体类,并使用JPA注解标识类与数据库表之间的映射关系:

@Entity
public class User {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    private String email;

    // Getters and setters
}

1.4 创建Repository接口

通过Spring Data JPA,我们可以快速创建一个Repository接口,继承JpaRepository,它提供了常见的数据库操作方法。

public interface UserRepository extends JpaRepository<User, Long> {
    List<User> findByName(String name);
}

2. 使用JDBC进行数据访问

Spring Boot也提供了对JDBC的支持,简化了JDBC操作。使用JdbcTemplate来执行SQL查询、插入、更新等操作。

2.1 配置数据源

配置数据源与JPA类似,使用application.properties进行数据库连接配置。

2.2 创建JdbcTemplate

创建一个JdbcTemplate实例:

@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
    return new JdbcTemplate(dataSource);
}

2.3 执行查询和更新操作

通过JdbcTemplate执行查询操作:

@Autowired
private JdbcTemplate jdbcTemplate;

public List<User> getAllUsers() {
    String sql = "SELECT * FROM users";
    return jdbcTemplate.query(sql, new RowMapper<User>() {
        @Override
        public User mapRow(ResultSet rs, int rowNum) throws SQLException {
            User user = new User();
            user.setId(rs.getLong("id"));
            user.setName(rs.getString("name"));
            user.setEmail(rs.getString("email"));
            return user;
        }
    });
}

2.4 执行更新操作

插入或更新数据:

public int addUser(User user) {
    String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
    return jdbcTemplate.update(sql, user.getName(), user.getEmail());
}

🎯 总结:Spring Boot的强大功能与数据库集成

通过Spring Boot,开发者能够轻松配置和访问数据库,利用JPA和JDBC等技术与数据库进行交互。Spring Boot的自动配置特性大大简化了开发流程,同时也支持application.propertiesapplication.yml文件进行灵活的配置。

核心优势:

  • 简化配置:自动配置使得开发者无需编写繁琐的配置文件。
  • 强大的数据库支持:支持JPA、JDBC等多种数据库访问技术。
  • 灵活的配置文件application.propertiesapplication.yml提供了灵活的配置管理方式。

通过这些强大的功能,Spring Boot使得数据库集成和应用开发变得更加高效,帮助开发者节省大量的时间和精力。

🧧福利赠与你🧧

  无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学SpringBoot」专栏(全网一个名),bug菌郑重承诺,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门SpringBoot,就像滚雪球一样,越滚越大, 无边无际,指数级提升。

  最后,如果这篇文章对你有所帮助,帮忙给作者来个一键三连,关注、点赞、收藏,您的支持就是我坚持写作最大的动力。

  同时欢迎大家关注公众号:「猿圈奇妙屋」 ,以便学习更多同类型的技术文章,免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板、技术文章Markdown文档等海量资料。

✨️ Who am I?

我是bug菌(全网一个名),CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等社区博客专家,C站博客之星Top30,华为云多年度十佳博主/价值贡献奖,掘金多年度人气作者Top40,掘金等各大社区平台签约作者,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者;全网粉丝合计 30w+;更多精彩福利点击这里;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料,你想要的我都有,关键是你不来拿。

-End-

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。