首先定义我们的类

package com.example.demo.config;

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

    public User() {
    }

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

    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

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

    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                '}';
    }

    public static void main(String[] args) {
        com.example.demo.boot.User u = new com.example.demo.boot.User("1", 1);
        System.out.println(u.toString());
    }
}

 

然后我们注册到容器中

package com.example.demo.config;

import com.example.demo.bean.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration(proxyBeanMethods = true) //告诉SpringBoot这是一个配置类
public class MyConfig {

    @Bean() //给容器添加组件 以方法名作为组件的id 返回类型就是组件类型 返回的值就是组件在容器中保存的实例
    public User user01(){
        return new User("zhangsan", 18);
    }

}

查看注册是否成功(在我们的启动目录)

package com.example.demo;

import com.example.demo.bean.User;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

@SpringBootApplication
public class DemoApplication {

	public static void main(String[] args) {
		//获取IOC容器
		ConfigurableApplicationContext run = SpringApplication.run(DemoApplication.class, args);
		//查看容器里的组件
		String [] names = run.getBeanDefinitionNames();
		for(String s:names){
			System.out.println(s);
		}
		User u1 = run.getBean("user01", User.class);
		User u2 = run.getBean("user01", User.class);
		System.out.println(u1==u2);
	}

}

打印出来我们的user类,即注册成功! 

解决问题

Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'user01' available

出现这个问题的原因是因为,我们的

Configuration

使用的地方出现问题,我们需要把config跟Application放在同一目录下,这样Spring才能扫描到我们的注册类

 

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐