目录
@SpringBootApplication
@Component
@Autowired
@RequestMapping
@Configuration 和 @Bean
@SpringBootApplication
- 解释:这是 Spring Boot 应用的核心注解,它是一个组合注解,包含了
@Configuration
、@EnableAutoConfiguration
和@ComponentScan
这三个注解的功能。@Configuration
表明该类是一个配置类,@EnableAutoConfiguration
开启自动配置功能,让 Spring Boot 根据类路径下的依赖和配置自动配置 Spring 应用,@ComponentScan
用于扫描指定包及其子包下的组件并将其注册到 Spring 容器中。 - 场景示例
@SpringBootApplication
public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}
}
在上述代码中,@SpringBootApplication
注解在启动类MyApplication
上,使得该应用具备了自动配置、组件扫描等功能,能够快速启动一个 Spring Boot 应用。
@Component
- 解释:用于将一个普通的 Java 类标记为 Spring 容器中的组件,让 Spring 可以自动扫描并管理该类的实例。它是一个通用的组件注解,其他如
@Service
、@Repository
、@Controller
等注解本质上也是基于@Component
的特殊化注解。 - 场景示例
@Component
public class MyComponent {// 组件的业务逻辑方法public void doSomething() {System.out.println("执行MyComponent的doSomething方法");}
}
在这个例子中,MyComponent
类被@Component
注解标记,Spring 容器在启动时会扫描到这个类,并创建它的实例,以便在其他地方可以通过依赖注入来使用它。
@Autowired
- 解释:用于实现自动装配,它可以对类的成员变量、方法参数等进行标注,让 Spring 容器在运行时自动注入对应的依赖对象。默认情况下,它是按照类型进行装配的,如果存在多个相同类型的 Bean,也可以结合
@Qualifier
注解按照名称进行装配。 - 场景示例
@Service
public class MyService {@Autowiredprivate MyRepository myRepository;// 业务逻辑方法,使用myRepository进行数据操作public void doService() {myRepository.saveData("测试数据");}
}
在MyService
类中,通过@Autowired
注解自动注入了MyRepository
类型的对象,这样在MyService
的业务方法中就可以直接使用MyRepository
来进行数据操作,而不需要手动创建和赋值MyRepository
对象。
@RequestMapping
- 解释:用于处理请求映射,它可以标注在类或方法上。标注在类上时,表示该类中的所有请求处理方法都有一个共同的请求路径前缀;标注在方法上时,指定了该方法所处理的具体请求路径和请求方法等信息。
- 场景示例
@Controller
@RequestMapping("/users")
public class UserController {@RequestMapping(value = "/{id}", method = RequestMethod.GET)public String getUserById(@PathVariable("id") Long id, Model model) {// 根据id查询用户信息User user = userService.getUserById(id);model.addAttribute("user", user);return "userDetails";}
}
在上述代码中,@RequestMapping("/users")
定义了UserController
类中所有请求处理方法的路径前缀为/users
,而@RequestMapping(value = "/{id}", method = RequestMethod.GET)
表示getUserById
方法处理以/users/{id}
为路径的 GET 请求,其中{id}
是一个路径变量,用于获取用户的 ID。
@Configuration 和 @Bean
- 解释
- @Configuration:用于标记一个类作为配置类,该类可以包含多个
@Bean
注解标注的方法,用于向 Spring 容器中注册 Bean。 - @Bean:用于在配置类中定义一个 Bean,告诉 Spring 容器如何创建和管理这个 Bean 对象。
- @Configuration:用于标记一个类作为配置类,该类可以包含多个
- 场景示例
@Configuration
public class AppConfig {@Beanpublic DataSource dataSource() {// 创建并配置数据源DriverManagerDataSource dataSource = new DriverManagerDataSource();dataSource.setDriverClassName("com.mysql.jdbc.Driver");dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");dataSource.setUsername("root");dataSource.setPassword("password");return dataSource;}
}
在AppConfig
配置类中,@Configuration
注解表明这是一个配置类,@Bean
注解的dataSource
方法创建了一个DataSource
类型的 Bean,并配置了数据库连接信息,Spring 容器在启动时会调用这个方法来创建DataSource
对象并将其注册到容器中,供其他组件使用。