关于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.配置方法二:

    

 

posted @   qwedfrgh  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示