Spring -- 全注解下的IoC(1)
Spring IoC容器
1. Spring IoC 容器简介
- Spring Bean :Spring中每一个需要管理的对象称为Spring Bean(简称 Bean)。
- Spring IoC容器:管理Bean 的容器。
- 1. 通过描述管理Bean, 包括发布和获取Bean。
- 2. 通过描述完成Bean之间的依赖关系。
2. 通过@Componet 自动的装配你的Bean
2.1 编写一个简单的User类
package com.examole.demo2; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; /* @Component 标识这个类将Spring IoC容器扫描装配,user作为Bean的名字注入到IoC中*/ /* 如果不给括号里的name IoC容器会把类名首字母小写其它不变注作为名称注入IoC容器中 */ @Component("user") public class User { /* @value给下面字段注入值 */ @Value("1") private Long id; @Value("user_name_1") private String user_name; @Value("note_1") private String note; /** Geter And Seter Here**/ }
2.2 编写一个 AppConfig 配置类
@Configuration 注解会辨识这是一个配置类
@ComponentScan 注解会去扫描某一个包下,所有标识有@Component 的类, 创建他们的对象存入Spring IoC容器中
package com.examole.demo2; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Service; @Configuration /* 当我们不给@ComponentScan中标识指定的包时,他会扫描它自所在的包 使用excludeFilters = {@ComponentScan.Filter(classes = {Service.class})} 可以在扫描某一个包时,越过一些特殊的类(如使用@Service 注解的类)*/ @ComponentScan(basePackages = {"com.examole.demo2"},excludeFilters = {@ComponentScan.Filter(classes = {Service.class})}) //@ComponentScan("com.examole.demo2.*") 扫描指定包下所有的文件 //@ComponentScan(backPackagesClasses = {User.class}) 扫描指定的类 public class AppConfig { }
UserService类
package com.examole.demo2; import org.springframework.stereotype.Service; @Service public class UserService { public void printUser(User user){ System.out.println(user.getId()); System.out.println(user.getUser_name()); System.out.println(user.getNote()); } }
2.3 验证
package com.examole.demo2; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class Test { public static void main(String[] args) { ApplicationContext applicationContext = new AnnotationConfigApplicationContext(User.class); User user = applicationContext.getBean(User.class); UserService service = new UserService(); service.printUser(user); } }
结果