springboot---Configration,Bean

1.Configuration和Bean

package com.atguigu.config;
import com.atguigu.bean.Pet;
import com.atguigu.bean.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * 1.配置类中使用Bean注解给容器注册组件,默认是单例
 * 2.配置类也是组件
 * 3.proxyBeanMethods是不是代理bean的方法
 *  Full(proxyBeanMethods = true)
 *  Lite(proxyBeanMethods = false)
 *  组件依赖
 *  假如组件没有互相依赖:使用false;效率快
 *  假如组件有互相依赖:使用true;效率慢
 */
@Configuration(proxyBeanMethods = false)//告诉spring这是一个配置类,相当于xml配置文件
public class MyConFig {

    @Bean//给容器添加组件,默认方法名就是组件id,返回值类型就是组件类型,返回的值就是组件的实例,也就是赋值

    /**
     * 配置类无论调用多想遍方法,对象都是同一个对象,单例模式
     */
    public User user(){
        User user =  new User("小王",14);
        user.setPet(pet());
        return user;
    }
    @Bean("tom")//可以给bean取别名,否则就是方法名
    public Pet pet(){
        return new Pet("tomcat");
    }
}

User

package com.atguigu.bean;

/**
 * @author Administrator
 * @description: TODO
 * @date 2021/12/11 15:39
 */

public class User {
    private String name;
    private Integer age;
    private Pet pet;


    public User() {

    }

    public User(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public Pet getPet() {
        return pet;
    }

    public void setPet(Pet pet) {
        this.pet = pet;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", pet=" + pet +
                '}';
    }
}

pet

package com.atguigu.bean;

/**
 * @author Administrator
 * @description: TODO
 * @date 2021/12/11 15:39
 */

public class Pet {
    private 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.atguigu;

import com.atguigu.bean.Pet;
import com.atguigu.bean.User;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

/**
 * 主程序入口
 */
@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
        //1.返回我们的ioc容器
        ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class,args);
        //2.查看容器中的组件
        String[] names = run.getBeanDefinitionNames();
        for (String name : names) {
            //System.out.println(name);
        }

        //3.从容器中获取组件
        Pet tom1 = run.getBean("tom",Pet.class);
        Pet tom2 = run.getBean("tom",Pet.class);
        System.out.println("组件:"+(tom1==tom2));

        User user =  run.getBean("user", User.class);
        Pet tom = run.getBean("tom",Pet.class);
        System.out.println("用户的狗:"+ (user.getPet()==tom));

    }
}

。。。

 

posted @ 2021-12-11 16:32  江南0o0  阅读(73)  评论(0编辑  收藏  举报