Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它提供了一组常用的注解,用于简化开发过程和配置管理。以下是一些常用的Spring Boot注解的介绍和基础知识:
-
@SpringBootApplication:这是一个组合注解,用于标注主应用程序类。它包含了@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan注解。
主程序项目文件结构一般为:
src/main/java
com.example.demo
DemoApplication.java
代码块注入如下:
-
@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
注:主程序不能随意删除,否则run运行时会进行报错。
-
@RestController:这个注解用于标注控制器类,表示该类中的所有方法都以JSON格式返回响应。@RestController注解写于Controller层
@RequestMapping:这个注解用于映射URL路径到方法上。可以用于类级别和方法级别,用于处理HTTP请求。
-
控制层项目文件结构一般为:
src/main/java
com.example.demo
DemoApplication.java
controller
UserController.java
代码块注入如下:
-
@RestController @RequestMapping("/users") public class UserController {}
-
@Autowired:这个注解用于自动注入依赖对象。它可以用于构造方法、属性和方法上。
代码注入示例:
package com.example.demo.dao; import com.example.demo.model.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; import java.util.List; @Repository public class UserRepository { @Autowired private JdbcTemplate jdbcTemplate; public List<User> findAll() { String sql = "SELECT * FROM users"; return jdbcTemplate.query(sql, (rs, rowNum) -> { User user = new User(); user.setId(rs.getLong("id")); user.setName(rs.getString("name")); user.setEmail(rs.getString("email")); return user; }); } public void save(User user) { String sql = "INSERT INTO users (name, email) VALUES (?, ?)"; jdbcTemplate.update(sql, user.getName(), user.getEmail()); } public void delete(Long id) { String sql = "DELETE FROM users WHERE id = ?"; jdbcTemplate.update(sql, id); } }
package com.example.demo.dao; import com.example.demo.model.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; import java.util.List; @Repository public class UserRepository { @Autowired private JdbcTemplate jdbcTemplate; public List<User> findAll() { String sql = "SELECT * FROM users"; return jdbcTemplate.query(sql, (rs, rowNum) -> { User user = new User(); user.setId(rs.getLong("id")); user.setName(rs.getString("name")); user.setEmail(rs.getString("email")); return user; }); } public void save(User user) { String sql = "INSERT INTO users (name, email) VALUES (?, ?)"; jdbcTemplate.update(sql, user.getName(), user.getEmail()); } public void delete(Long id) { String sql = "DELETE FROM users WHERE id = ?"; jdbcTemplate.update(sql, id); } }
-
在Spring Boot中,使用
@Service
注解标注的类会被自动扫描并注册为Spring的Bean。它通常用于标识业务逻辑的实现类。下面是一个使用
@Service
注解的示例:@Service public class UserService { public void createUser(User user) { // 业务逻辑实现代码 } public User getUserById(long id) { // 业务逻辑实现代码 return null; } // 其他业务方法... }
在这个示例中,
UserService
类被标注为@Service
,表示它是一个服务层的组件。可以在该类中实现一些与用户相关的业务逻辑,例如创建用户、获取用户信息等。通过将
@Service
注解添加到类上,Spring Boot会自动将该类实例化并注册为Spring的Bean,这样我们就可以在其他组件中使用UserService
。需要注意的是,为了让Spring Boot能够自动扫描到
@Service
注解,需要将该注解所在的包路径包含在@ComponentScan
注解中。如果你的@Service
注解在根包下或者与主程序类在同一个包下,那么无需额外配置。否则,你需要在主程序类上加上@ComponentScan
注解,并指定要扫描的包路径。
8. 在Spring Boot中,使用@Data注解与普通的Java应用程序中使用方式相同。只需在类上添加@Data注解即可。
在Spring Boot应用程序中,通常会使用@Data注解来简化实体类的定义,以及避免手动编写Getter和Setter方法、toString方法、equals方法和hashCode方法等。
下面是一个使用@Data注解的示例:
@Data @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "name") private String name; @Column(name = "age") private int age; }
上述代码中,使用@Data注解标注了一个User类。这个类同时使用了其他的JPA注解,如@Entity、@Table、@Id、@GeneratedValue和@Column等,用于定义实体类和数据库表之间的映射关系。
使用@Data注解后,编译时会自动生成Getter和Setter方法、toString方法、equals方法和hashCode方法,避免了手动编写这些方法的繁琐工作。
需要注意的是,使用@Data注解会自动生成所有属性的Getter和Setter方法,如果不希望某个属性被访问或修改,可以使用其他访问控制修饰符(如private)来限制访问。
最后这些注解只是Spring Boot提供的一部分,还有许多其他的注解可以用于不同的场景和功能。熟悉这些注解可以帮助开发者更好地使用和理解Spring Boot框架。知识靠的是实践慢慢积累的,所以学习不是一下子的事情,需要我们循序渐进,慢慢吸收。