我在那里找到了以下代码片段:
package com.concretepage;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.concretepage.bean.Company;
import com.concretepage.bean.Employee;
@Configuration
public class AppConfig {
@Bean
public Company getCompany() {
Company company = new Company();
company.setCompName("ABCD Ltd");
company.setLocation("Varanasi");
return company;
}
@Bean
public Employee getEmployee() {
return new Employee();
}
}
package com.concretepage;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import com.concretepage.bean.Employee;
public class SpringDemo {
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
ctx.register(AppConfig.class);
ctx.refresh();
Employee employee = ctx.getBean(Employee.class);
System.out.println("Company Name:"+ employee.getCompany().getCompName());
System.out.println("Location:"+ employee.getCompany().getLocation());
ctx.close();
}
}
我想得到关于该行的解释:
Employee employee = ctx.getBean(Employee.class);
'ctx'将AppConfig类作为参数。 AppConfig类包括两个方法getCompany和getEmployee。我不明白的是,如果我们有方法'getEmployee'返回一个新的'Employee'对象,为什么我们必须使用'ctx.getBean(Employee.class)'做同样的事情?
此外,在方法'getCompany'和'getEmployee'上使用注释'@Bean'有什么好处?
答案 0 :(得分:0)
Spring的ApplicationContext使用@Bean
注释来创建返回的bean。默认情况下,仅创建一个实例。豆是单身人士。
每次调用它时,使用Employee employee = ctx.getBean(Employee.class);
都会返回相同的对象。
所以回答你的问题:
如果我们有方法'getEmployee'返回一个新的'Employee'对象,为什么我们必须使用'ctx.getBean(Employee.class)'?
因为这是Spring的应用程序上下文初始化Bean的方式。它运行您的getEmployee()
方法并创建一个Bean。
在方法'getCompany'和'getEmployee'上使用注释'@Bean'有什么好处?
好吧,如果你不使用{{1 Spring不知道你想要一个Bean。
是的..阅读一些Spring文档还有很长的路要走。
答案 1 :(得分:-1)
关于使用@Bean的好处:看看它:https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-spring-beans-and-dependency-injection.html
D.I。 (依赖注入)概念是您首先需要理解的,而且您将能够看到如何使用/注入这些@Beans。