IOC操心Bean管理(基于注解方式)
1.什么是注解
(1)注解是代码特殊标记,格式:@注解名称(属性名称=属性值,属性名称=属性值…)
(2)使用注解,注解作用在类上面,方法上面,属性上面
(3)使用注解目的:简化xml配置
2.Spring针对Bean管理中创建对象提供注解
(1)@Component
(2)@Service
(3)@Controller
(4)@Repository
上面四个注解功能是一样的,都可以用来创建bean实例
3.基于注解方式实现对象创建
第一步 引入依赖
spring-aop-5.2.6.RELEASE.jar
或者
<dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>5.3.15</version>
</dependency>
第二步 开启组件扫描
<!--1.如果扫描多个包,多个包使用逗号隔开-->
<!--2.扫描包上层目录-->
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><!--开启组件扫描--><!--1.如果扫描多个包,多个包使用逗号隔开--><!--2.扫描包上层目录--><context:component-scan base-package="com.atguigu.spring.testdemo,com.atguigu.spring.service"></context:component-scan></beans>
第三步 创建类,在类上面添加创建对象注解
package com.atguigu.spring.service;import org.springframework.stereotype.Component;//在注解里面value属性值可以省略不写
//默认值是类名称,首字母小写
@Component(value = "userService")//<bean id = "" class = ""/>
public class UserService {public void add(){System.out.println("service add");}
}
测试:
package com.atguigu.spring.testdemo;import com.atguigu.spring.service.UserService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestSpring5Demo1 {@Testpublic void testService(){ApplicationContext context = new ClassPathXmlApplicationContext("bean6.xml");UserService userService = context.getBean("userService", UserService.class);System.out.println(userService);userService.add();}
}