文章目录
- 前言
- 一、bean扫描
-
- [1. @SpringBootApplication](#1. @SpringBootApplication)
- [2. @ComponentScan](#2. @ComponentScan)
- 二、bean注册
-
- 1.应用bean注册
- 2.外部bean注册
-
- [2.1 @Bean](#2.1 @Bean)
- [2.2 @Import](#2.2 @Import)
- 3.bean注册条件
-
- [3.1 @ConditionalOnProperty](#3.1 @ConditionalOnProperty)
- [3.2 @ConditionalOnMissingBean](#3.2 @ConditionalOnMissingBean)
- [3.3 @ConditionalOnBean](#3.3 @ConditionalOnBean)
- 总结
前言
注册bean对象相关内容。
一、bean扫描
1. @SpringBootApplication
springboot应用程序会扫描启动类同级及子目录下的java文件。
2. @ComponentScan
bash
@Configuration
@ComponentScan(basePackages = "org.example.spring")
public class SpringBootConfig {}
二、bean注册
1.应用bean注册
在springboot应用中我们通常通过注解的形式完成bean对象的注册
注解 | 描述 |
---|---|
@Component | 被标识的类被spring容器管理 |
@Controller | 控制层注解,@Component衍生类 |
@Service | 服务层注解,@Component衍生类 |
@Repository | 持久层注解,@Component衍生类 |
2.外部bean注册
将jar包中的类交由spring容器管理
2.1 @Bean
java
@Configuration
public class DruidConfig {
@Bean
@ConfigurationProperties("spring.datasource.druid")
public DataSource dataSource(){
return new DruidDataSource();
}
}
2.2 @Import
bash
@MapperScan("org.example.springboot3.mybatis.mappers")
@RestController
@SpringBootApplication
@Import(DruidConfig.class)
public class SpringBoot3Application {
private static final Logger log = LoggerFactory.getLogger(SpringBoot3Application.class);
public static void main(String[] args) {
ConfigurableApplicationContext run = SpringApplication.run(SpringBoot3Application.class, args);
String appName = run.getEnvironment().getProperty("spring.application.name");
log.info("{}启动完成",appName);
}
@RequestMapping("/")
String home() {
return "Hello SpringBoot!";
}
}
3.bean注册条件
3.1 @ConditionalOnProperty
java
@Bean
@ConfigurationProperties("spring.datasource.druid")
@ConditionalOnProperty(prefix = "spring.datasource.druid",value = {"driver-class-name","url","username","password"})
public DataSource dataSource(){
return new DruidDataSource();
}
3.2 @ConditionalOnMissingBean
bash
@Bean
@ConfigurationProperties("spring.datasource.druid")
@ConditionalOnProperty(prefix = "spring.datasource.druid",value = {"driver-class-name","url","username","password"})
@ConditionalOnMissingBean(DataSource.class)
public DataSource dataSource(){
return new DruidDataSource();
}
3.3 @ConditionalOnBean
java
@Bean
@ConfigurationProperties("spring.datasource.druid")
@ConditionalOnProperty(prefix = "spring.datasource.druid",value = {"driver-class-name","url","username","password"})
@ConditionalOnMissingBean(DataSource.class)
@ConditionalOnBean(com.mysql.cj.jdbc.Driver.class)
public DataSource dataSource(){
return new DruidDataSource();
}