IOC操作Bean管理(基于注解方式)
什么是注解 (1)注解是代码特殊标记,格式:@注解名称(属性名称=属性值,属性名称=属性值) (2)使用注解,注解可以作用在类上面,方法上面,属性上面 (3)使用注解的目的:简化xml配置Spring 针对Bean管理中创建对象提供注解 (1)@Component (2) @Service (3)@Controller (4)@Repository *上面四个注解功能是一样的,都可以用来创建bean实例基于注解方式实现对象的创建第一步 引入依赖
第二步 开启组件扫描
<!--开启组件扫描 1 如果扫描多个包使用逗号隔开 --> <context:component-scan base-package="com.chen.spring5.Dao,com.chen.spring5.Service"></context:component-scan> <!-- 2 扫描包的上层目录 --> <context:component-scan base-package="com.chen.spring5"></context:component-scan>第三步 创建类,在类上添加创建对象的注解
//在注解里面value属性值可以不写, //默认类名称,首字母小写 //UserService -- userService //@Component(value = "userService")//<bean id = "" class = ""> @Service public class UserService { public void add(){ System.out.println("service add...." + name); } } 开启组件扫描细节配置 <!--示例 1 use-default-filters="false" 表示现在不使用默认 filter,自己配置 filter context:include-filter ,设置扫描哪些内容 --> <context:component-scan base-package="com.chen" use-defaultfilters="false"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> <!--示例 2 下面配置扫描包所有内容 context:exclude-filter: 设置哪些内容不进行扫描 --> <context:component-scan base-package="com.chen"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> 基于注解方式实现属性注入(1)@AutoWired :根据属性类型进行自动注入 第一步 把service和dao对象创建,在service和dao类中添加创建对象注解 第二步 在service注入dao对象,在service类添加dao类型属性,在属性上使用注解
@Service public class UserService { //定义 dao 类型属性 //不需要添加 set 方法 //添加注入属性注解 @Autowired private UserDao userDao; public void add() { System.out.println("service add......."); userDao.add(); } }(2)@Qualifier :根据属性名称注入 @Qualifier注解的使用,和上面@AutiWired一起使用
//定义 dao 类型属性 //不需要添加 set 方法 //添加注入属性注解 @Autowired //根据类型进行注入 @Qualifier(value = "userDaoImpl1") //根据名称进行注入 private UserDao userDao;(3)@Resource :可以根据类型注入,可以根据名称注入
//@Resource //根据类型进行注入 @Resource(name = "userDaoImpl1") //根据名称进行注入 private UserDao userDao;(4)@Value :注入普通类型属性
@Value(value = "abc") private String name; 完全注解开发(1)创建配置类,替代xml配置文件
@Configuration //作为配置类,替代xml配置文件 @ComponentScan(basePackages = {"com.chen.spring5"}) public class SpringConfig { }(2)编写测试类
@Test public void testService2(){ ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class); UserService userService = context.getBean("userService",UserService.class); userService.add(); }