关于springboot的一些注解
@Configuration
Full模式与Lite模式
package com.chen.demo1.config; import com.chen.demo1.pojo.Pet; import com.chen.demo1.pojo.User; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; //作用等价于spring的核心配置文件(管理bean的容器) //使用@Configuration的类也是一个组件,被spring容器注册了 @Configuration(proxyBeanMethods=false) //默认是true //当它是true的时候外部对组件的注册方法调用多少遍,都会检查是否已经创建,如果创建了就返回创建好的 //当它是false的时候,外部一调用注册方法,就会再创建一个 //一般,如果就单纯的容器中注册组件,设置为false;如果别的组件中用到了另一个组件的依赖,我们设置为true。 public class configer { //重命名bean的id为tom而不是Mypet @Bean("tom") public Pet Mypet(){ return new Pet("tomcat"); } //作用等价于spring容器中注册的一个一个bean //方法的返回类型就是bean的class 方法名就是bean的id //是springboot中的一个一个组件 @Bean public User user1(){ User user =new User("chen",18); user.setPet(Mypet()); return user; } }
在主函数的用法
@SpringBootApplication public class Demo1Application { public static void main(String[] args) { ConfigurableApplicationContext run = SpringApplication.run(Demo1Application.class, args); //查看所有组件 String[] beanNames = run.getBeanDefinitionNames(); for (String beanName : beanNames) { //System.out.println(beanName); } User user = run.getBean(User.class); System.out.println(user.getPet().getName()); //Pet pet = run.getBean("tomcat", Pet.class); //这行代码是错的,因为在配置类中bean的名字叫tom了 Pet pet = run.getBean("tom", Pet.class); //这行代码是错的,因为在配置类中bean的名字叫tom了 System.out.println(pet.getName()); System.out.println(user.getPet()==pet); //上面的这个结果取决于配置类的@Configuration(proxyBeanMethods=false)注解属性 //当它是true的时候外部对组件的注册方法调用多少遍,都会检查是否已经创建,如果创建了就返回创建好的 //当它是false的时候,外部一调用注册方法,就会再创建一个 //一般,如果就单纯的容器中注册组件,设置为false;如果别的组件中用到了另一个组件的依赖,我们设置为true。 } }
@Bean、@Component、@Controller、@Service、@Repository它们是Spring的基本标签,在Spring Boot中并未改变它们原来的功能。
@Conditional条件装配
条件装配:满足Conditional指定的条件,则进行组件注入
常用的有:ConditionalOnXXXX (当存在XXXX时候进行组件的注入) ConditionalOnMissingXXXX(当没有XXXX的时候不进行注入)
@ImportResource导入Spring配置文件
比如,公司使用bean.xml文件生成配置bean,然而你为了省事,想继续复用bean.xml,@ImportResource粉墨登场。
<?xml version="1.0" encoding="UTF-8"?> <beans ..."> <bean id="haha" class="com.lun.boot.bean.User"> <property name="name" value="zhangsan"></property> <property name="age" value="18"></property> </bean> <bean id="hehe" class="com.lun.boot.bean.Pet"> <property name="name" value="tomcat"></property> </bean> </beans>
直接将上面这个bean.xml复用
@ImportResource("classpath:beans.xml") public class MyConfig { ... }
@ConfigurationProperties配置绑定
将配置文件中application.properties中内容读取,并绑定到bean中
1.配置方法一:
@ConfigurationProperties + @Component
2.配置方法二:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?