大家好,我是网创有方,上节我们实践了通过@Bean方式声明Bean配置。咱们这节通过@Component和@ComponentScan方式实现一个同样功能。这节实现的效果是从IOC中加载Bean对象,并且将Bean的属性打印到控制台。
第一步:创建pojo实体类student
上节我们是新建了一个config的包和pojo包,我们的student类放在pojo类中,这节要把student类移动到config中。为什么要移动,原因是@ComponentScan注解的类只会扫描当前包下的类,首先,创建一个student实体类,通过右键Generate生成属性的getter和setter方法。
Student.java
代码如下:
package cn.wcyf.wcai.config;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;@Component("student")
public class Student {@Value("小明")String name;//姓名@Value("18")int age;//年龄public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}
第二步:创建Appconfig容器配置类
新建一个config包,创建一个AppConfig.java类
package cn.wcyf.wcai.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;@Configuration
@ComponentScan
public class AppConfig {}
第三步:创建IOC容器,加载bean到容器中
代码如下:
@SpringBootApplicationpublic class WcaiApplication {public static void main(String[] args) {var ctx = new AnnotationConfigApplicationContext(AppConfig.class);var student = ctx.getBean(Student.class);System.out.println(student.getName());System.out.println(student.getAge());}@Controllerpublic static class HelloController {@GetMapping("/test")public String test(HttpServletRequest request) {return "index";}}}