3 回答
TA贡献1834条经验 获得超8个赞
使用时进行编辑@Component("h")
,您正在创建一个名为 h 的 bean,该 bean 具有在 Hello 类中定义的某些属性。所以你不需要 Appconfig 类。而且你不应该尝试在 Hello 类之外的其他地方更改 bean 属性(如 setGender)。那么我什么时候应该使用配置类?当您不将 Hello 类标记为 bean 时(即不使用组件注释)。您创建一个 Hello 类对象,设置某些属性并将其标记为 bean(使用 @bean)。
不,您不必自己创建对象。将 Hello 类标记为@Component("h")
,您可以直接使用Hello h=ct.getBean("h",Hello.class);
.
您还可以使用Autowired注释将您的 bean 放在任何地方并做您想做的任何事情。
TA贡献1875条经验 获得超3个赞
有两种方法可以在 Spring Context 中创建 bean
使用@Component 注解(委托创建 Spring Framework)
@Component:类上方的注解表明该类是一个组件,应自动检测并实例化。因此,Spring 组件 bean 将如下所示:
@Component
public class User {
private String name;
private String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
使用组件扫描扫描您的 bean:
XML 老派 Spring 配置:
<context:component-scan base-package=”com.yourpackage” />
组件扫描(如果你使用 Spring boot,它会被包含在 @SpringBootAppilcation 中)
@ComponentScan(basePackageClasses = Yourclass.class)
使用@Configuration 注解:(您的实际选择)
使用带有@bean 注释的方法的@Configuration 类。您应该在此处提供如何创建新的对象设置值(您的 getHello 方法):
@Bean(name="h")
public Hello getHello(){
Hello h= new Hello();
h.setGender("male");
return h;
}
TA贡献1719条经验 获得超6个赞
您不需要在 AppConfig.java 类中显式创建 bean,因为您已经在 Hello.java 类上有 @Component 注释。它会自动创建bean。
您可以使用 main 中的代码直接访问 bean,但您需要在 @Component 中将 bean 的名称指定为“h”。
ApplicationContext ct=new AnnotationConfigApplicationContext(AppConfig.class);
Hello h=ct.getBean("h",Hello.class);
h.print();
添加回答
举报