首页 > 其他分享 >SpringBoot2注解:@Configuration

SpringBoot2注解:@Configuration

时间:2023-01-18 12:33:39浏览次数:52  
标签:name age bean SpringBoot2 User 注解 Configuration public String

@configuration

@Configuration这个注解作用就是告诉 springboot 这是一个配置类。配置类以及类里的方法都可以作为bean。用@Bean标记

@Configuration 包含 proxyBeanMethods字段,默认值是true。返回前检测是否存在实例,保证为单例模式。若proxyBeanMethods=”false”则直接返回实例

注意是先指定代理Bean,再通过Bean调用方法

实例1:

写两个Bean,user和pet

package com.itheima.bean;
 
public class Pet {
    String name;
 
    public Pet() {
    }
 
    public Pet(String name) {
        this.name = name;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    @Override
    public String toString() {
        return "Pet{" +
                "name='" + name + '\'' +
                '}';
    }
}
 
 
package com.itheima.bean;
 
public class User {
    String name;
    int age;
    Pet pet;
 
    public User() {
    }
 
    public User(String name,int age) {
        this.name = name;
        this.age = age;
    }
 
    public User(String name, int age, Pet pet) {
        this.name = name;
        this.age = age;
        this.pet = pet;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public int getAge() {
        return age;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
 
    public Pet getPet() {
        return pet;
    }
 
    public void setPet(Pet pet) {
        this.pet = pet;
    }
 
    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", pet=" + pet +
                '}';
    }
}

  

Bean的配置类:MyConfig.java,通过@Configuration和@Bean指定装配Bean

@Configuration(proxyBeanMethods = false)
public class MyConfig {
    @Bean
        public User user01(){

        User zhangsan = new User("zhangsan", 18);
//        zhangsan.setPet(pet01());
        return zhangsan;
    }
    @Bean("tom")
    public Pet pet01(){
        return new Pet("tom");
    }
}

  测试代码:将MyConfig.java作为Bean,将@Configuration(proxyBeanMethod=false),多次调用Bean的方法,比较返回对象是否相等。

@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
        ConfigurableApplicationContext run =
                SpringApplication.run(MainApplication.class, args);
//        String[] names = run.getBeanDefinitionNames();
//        for (String name : names) {
//            System.out.println(name);
//        }

        //这个ProxyBeanMethod居然是先代理MyConfig这个bean,
        // 再用bean调用其方法,测试bean的方法返回是否相等,我的天!

        MyConfig bean = run.getBean(MyConfig.class);
        System.out.println(bean);
        User user1 = bean.user01();
        User user2 = bean.user01();
        System.out.println(user1==user2);

//        哥直接用run获取对应的 user01 bean,难怪反复测试都返回true
//        User user01 = run.getBean("user01", User.class);
//        User user02 = run.getBean("user01", User.class);
//        System.out.println(user02==user01);
    }
}

  

标签:name,age,bean,SpringBoot2,User,注解,Configuration,public,String
From: https://www.cnblogs.com/Kaelthas/p/17059554.html

相关文章

  • ArcGIS Pro Add-Ins&Configurations开发系列1-
    ArcGISProAdd-Ins&Configurations开发系列1-安装配置一.安装ArcGISPro拓展要想进行ArcGISPro的Add-Ins或Configurations开发,需要先安装ArcGISPro拓展,能方便的创建Ar......
  • MyBatis-XML和注解
    参考:https://www.cnblogs.com/lyc-smile/p/9055856.htmlhttps://ld246.com/article/1488810828678https://blog.csdn.net/qq_41617744/article/details/80224721  ......
  • 【一句话】@Configuration和@Component的区别
    首先一句话:@Configuration修饰的类会被Cglib动态代理,@Component不会。详细:Cglib动态代理生成当前对象的子类Class,并对方法拦截,多次调用@Bean方法时直接从BeanFactory之......
  • 学习笔记——Spring中组件扫描(包含扫描、排除扫描)、Spring中完全注解开发;Spring整合Ju
    2023-01-18一、Spring中组件扫描1、默认使用的情况<context:component-scanbase-package="com.hh"></context:component-scan>2、包含扫描注:使用包含扫描之前,必须......
  • 学习笔记——Spring中的注解;Spring中装配对象的注解;使用注解配置对象中属性
    2023-01-17一、Spring中的注解 1、使用注解的原因(1)使用注解将对象装配到IOC容器中(2)使用注解管理对象之间依赖关系(自动装配)2、Spring中装配对象的注解(1)@Component标......
  • 注解使用
    1.@Secured角色判断1.1开启注解App启动类中加入注解@EnableGlobalMethodSecurity(securedEnabled=true,prePostEnabled=true)1.2controller层下@PostMapping......
  • @Transactional注解失效问是
    1.Transactional注解修饰在非public方法上的时候,2.被自己类中的别的方法调用说明:被注解修饰的方法所在的类,该类中的方法直接互相调用就会失效,只有别的类掉这个类的......
  • 注解和反射知识总结
    注解Java.Annotation1、注解入门什么是注解?Annotation是从JDK5.0以后引入的新技术Annotation的作用不是程序本身,可以对程序作出解释(这一点和注解(comment)没什......
  • MybatisPlus常用注解
    @TableName经过以上的测试,在使用MyBatis-Plus实现基本的CRUD时,我们并没有指定要操作的表,只是在Mapper接口继承BaseMapper时,设置了泛型User,而操作的表为user表,由此得出......
  • 请求参数满足 @NotEmpty 约束注解,BindingResult 却报错
    问题描述在User实体类的userID属性加@NotEmpty注解:publicclassUser{@NotEmpty(message="ID不能为空",groups={RuleGroupA.class})privateString......