java SpringBoot(三) 注册组件到容器 解决Exception in thread “main“ org.springframework.beans.factory.NoSuchBean
首先定义我们的类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
·
首先定义我们的类
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才能扫描到我们的注册类
更多推荐
已为社区贡献5条内容
所有评论(0)