欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > Spring 约定编程案例与示例

Spring 约定编程案例与示例

2025/9/24 15:01:57 来源:https://blog.csdn.net/zp357252539/article/details/146583858  浏览:    关键词:Spring 约定编程案例与示例

Spring 约定编程案例与示例


案例 1:组件自动扫描(@ComponentScan

描述:通过包路径约定自动扫描组件,无需逐个配置Bean。

代码示例

// 1. 目标组件(无需XML配置)
@Component // 使用Spring标准注解
class MyService {public void sayHello() {System.out.println("Hello from MyService!");}
}// 2. 配置类(约定包路径)
@Configuration
@ComponentScan("com.example.service") // 自动扫描该包下所有组件
public class AppConfig {}// 3. 运行类
public class Main {public static void main(String[] args) {AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);MyService service = context.getBean(MyService.class);service.sayHello(); // 输出:Hello from MyService!}
}

案例 2:REST 控制器映射(@RestController

描述:通过注解约定自动映射HTTP请求,无需XML配置。

代码示例

// 1. 控制器类(约定路径前缀)
@RestController
@RequestMapping("/api") // 根路径约定
class UserController {@GetMapping("/users") // URL路径约定public String getUsers() {return "User list endpoint";}
}// 2. 启动类(Spring Boot约定)
@SpringBootApplication // 自动配置Web环境
public class App {public static void main(String[] args) {SpringApplication.run(App.class, args);}
}// 运行后访问 http://localhost:8080/api/users 返回 "User list endpoint"

案例 3:Spring Boot 自动配置(@SpringBootApplication

描述:通过注解约定自动配置内嵌服务器、组件扫描等。

代码示例

// 1. 主启动类(单文件约定)
@SpringBootApplication // 包含@ComponentScan和@EnableAutoConfiguration
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}
}// 2. 自动注册Bean(无需XML)
@Component
class AutoConfiguredBean {public AutoConfiguredBean() {System.out.println("Auto-configured bean initialized!");}
}// 启动时自动输出:Auto-configured bean initialized!

案例 4:JPA 实体类命名约定

描述:通过实体类命名约定自动关联数据库表名。

代码示例

// 1. 实体类(表名约定)
@Entity
public class User { // 表名默认为 "user"@Id@GeneratedValueprivate Long id;private String name;// getters/setters
}// 2. Spring Data JPA 接口(方法名约定)
public interface UserRepository extends JpaRepository<User, Long> {List<User> findByName(String name); // 自动生成SQL查询
}// 3. 使用示例
@Service
public class UserService {@Autowiredprivate UserRepository repository;public List<User> findUsersByName(String name) {return repository.findByName(name);}
}

案例 5:日志记录约定(@Slf4j

描述:通过Lombok注解约定自动注入日志对象。

代码示例

// 1. 添加Lombok依赖(pom.xml)
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.24</version><scope>provided</scope>
</dependency>// 2. 使用注解约定
@Slf4j // 自动生成日志对象 "log"
@Component
public class MyService {public void doWork() {log.info("Processing task..."); // 直接使用log对象}
}

案例总结表

案例名称核心约定代码关键点核心注解/配置
组件自动扫描通过包路径约定自动注册Bean@ComponentScan("包路径") + @Component注解的类自动被扫描@ComponentScan, @Component
REST 控制器映射通过注解约定HTTP方法和路径@RestController + @RequestMapping/@GetMapping等路径映射注解@RestController, @RequestMapping
Spring Boot 自动配置通过注解启用内嵌服务器、组件扫描和自动配置@SpringBootApplication等效于 @Configuration, @ComponentScan, @EnableAutoConfiguration@SpringBootApplication
JPA 实体类命名实体类名默认对应数据库表名(如 User 对应表 user@Entity注解的类名自动映射为小写表名@Entity, Spring Data JPA方法名约定
Lombok 日志约定通过注解自动生成日志对象(无需手动创建Logger@Slf4j注解自动生成log对象@Slf4j (Lombok)

关键约定说明
  1. 包路径约定:组件扫描默认从主类所在包及子包开始扫描。
  2. REST路径约定@RequestMapping的路径前缀可复用,方法名如saveUser自动映射为/save-user
  3. Spring Boot 自动配置@SpringBootApplication会自动启用内嵌Tomcat、静态资源处理等。
  4. JPA 方法名约定findByName等方法名按规则自动生成查询SQL。
  5. Lombok注解:通过注解自动生成setter/getter、构造函数等代码。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词