1、什么是注解
(1)注解是代码特殊标记,格式:@注解名称(属性名称=属性值,属性名称=属性值.…)
(2)使用注解:注解作用在类上面,方法上面,属性上面
(3)使用注解目的:简化l配置
2、Spring针对Bean管理中创建对象提供注解
(1)@Component
(2)@Service
(3)@Controller
(4)@Repository
*上面四个注解功能是一样的,都可以用来创建bean实例
其实可以混用,但是为了区分不同层,@Controller用在web层
@Service用在业务层 @Repository用在dao层
3、基于注解方式实现对象创建
第一步:引入依赖
spring-aop-5.2.6.RELEASE.jar
第二步:开启组件扫描和引入命名空间context
<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.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!--开启组件扫描
1.如果扫描多个包,多个包使用 逗号 隔开
2.扫描上层目录-->
<context:component-scan base-package="com.spring5.service,com.spring5.dao"></context:component-scan>
<!-- <context:component-scan base-package="com.spring5"></context:component-scan>-->
第三步:创建类,在类上添加创建对象注解
//注解里面value属性值可以省略不写,默认值时类名称 首字母小学
//@Component
//@Component("userService")
//@Component(value = "userService") //相当于 <bean id ="" class = ""/>
//@Controller
@Service
public class UserService {
public void add(){
System.out.println("add .....");
}
}
junit测试
@Test
public void test5(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
UserService userService = context.getBean("userService", UserService.class);
System.out.println(userService);
userService.add();
}
测试结果:
userService对象创建成功
com.spring5.service.UserService@69930714
add .....
4.开启组件扫描细节
<!--示例1
user-default-filters="false" 表示现在不使用默认filter 自己配置filter
context:include-filter 设置要扫描的内容,只扫描com.spring5下Controller的注解
-->
<context:component-scan base-package="com.spring5" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!--示例2
下面配置扫描包所有内容
context:exclude-filter: 设置那些内容不进行扫描
排除com.spring5下面的Controller注解-->
<context:component-scan base-package="com.spring5">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>