一、注解
1.@Configuration
解释:是一个带有注解的类级别注解,表示一个配置类,用于定义和管理 Bean 的创建和配置,@Configuration 的主要用途是告诉 Spring Boot 这个类是一个配置类,Spring Boot 在启动时将会自动扫描到该类,并根据其中的配置信息创建和管理相应的 Bean
例子:
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyServiceImpl();
}
@Bean
public MyRepository myRepository() {
return new MyRepositoryImpl();
}
}
// 在上面的示例中,AppConfig 类使用 @Configuration 注解标记为一个配置类,myService() 和 myRepository() 方法使用 @Bean 注解分别定义了两个 Bean。
// 通过使用 @Configuration 注解,Spring Boot 会在启动时自动扫描到 AppConfig 类,并根据其中的配置信息创建 myService 和 myRepository 这两个 Bean,方便其他组件进行依赖注入和使用
2.@Component
解释:@Component 注解用于标记一个类为 Spring Bean,在其中可以使用其他注解进行更细粒度的配置,例如 @Autowired 用于进行依赖注入,方便组件的协同工作
二、组件注册
解释:注册到Spring的应用程序上下文中,使它们能够被其他组件或者框架访问和使用
自己的类(doudou):
package com.gaodidi.Bean;
public class doudou {
private String name;
private String passwd;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPasswd() {
return passwd;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
}
注册:
package com.gaodidi.config;
import com.gaodidi.Bean.doudou;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyConfig {
@Bean
public doudou mydoudou(){
return new doudou();
}
}
查看效果:
package com.gaodidi;
import com.gaodidi.Bean.doudou;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Main {
public static void main(String[] args) {
var a = SpringApplication.run(Main.class,args);
String bgm[] = a.getBeanNamesForType(doudou.class);
for (String s : bgm) {
System.out.println(s);
}
}
}
三、条件注释
解释:Spring Boot 中的条件注解是一种特殊的注解,用于在运行时根据特定条件来决定是否启用或禁用特定的 Spring Bean
温馨小贴士:如ConditionalOnClass()
有多个可写的参数方法,在idea里面长按ctrl然后鼠标点击函数即可进去查看,值对应的类型
@ConditionalOnClass(name="com.gaodidi.Bean.big")
:当存在后面的name所指向的类(该类为自己写的或者引用的)时,下面的函数生效@ConditionalOnMissingClass("com.gaodidi.Bean.big")
:当不存在后面的name所指向的类(该类为自己写的或者引用的)时,下面的函数生效@ConditionalOnBean(value = Cat.class)
:当存在注册到springboot里面类时,下面的函数生效@ConditionalOnMissingBean(value = Cat.class)
:当不存在注册到springboot里面类时,下面的函数生效
四、属性注释
解释:属性注释就是可以在application.properties
里面写入自己的初始的赋值(例xiaobaobei对应下面的prefix)
格式:
xiaobaobei.name="你好"
xiaobaobei.passwd="不好"
@ConfigurationProperties(prefix = "xiaobaobei")
:用于获取配置文件中的属性值,当应用启动时,Spring Boot会自动将配置文件中相应的属性值注入到被@ConfigurationProperties注解标记的类中
@ConfigurationProperties(prefix = "xiaobaobei")
public class doudou {
private String name;
private String passwd;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPasswd() {
return passwd;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
@Override
public String toString() {
return "doudou{" +
"name='" + name + '\'' +
", passwd='" + passwd + '\'' +
'}';
}
}
@EnableConfigurationProperties(big.class)
:主要用于导入外来的含有@ConfigurationProperties的包,因为它会直接让含有@ConfigurationProperties的包注册上(用法:写在配置类外面)
@Configuration
@EnableConfigurationProperties(big.class) //主要用于导入外来的含有@ConfigurationProperties的包,因为它会直接让含有@ConfigurationProperties的包注册上
public class MyConfig {
@Bean
public doudou mydoudou(){
return new doudou();
}
}