什么是注解?
(1)注解是代码的特殊标记,格式:@注解名称(属性名称=属性值,)
(2)使用注解,注解作用在**类**上面,**方法**上面,**属性**上面
(3)使用注解的目的:简化xml配置
Spring 针对Bean管理中创建对象提供注解
(1)@Compenent
(2)@Controller
(3)@Service
(4) @Repository
四个注解功能上是一样的,都可以用来创建bean实例
基于注解方式实现对象创建
1、第一步,引入spring-aop的依赖
<!-- https://mvnrepository.com/artifact/org.springframework/spring-aop -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
2、开启组件扫描(Spring才能找到注解)
<!--
开启注解扫描
1.如果扫描多个包,多个包使用逗号隔开
2.扫描上层目录
-->
<context:component-scan base-package="IOC容器.Bean管理操作.注解方式"></context:component-scan>
注解的扫描组件 中 我们可以不使用它自带的过滤器,自定义扫描注解的范围
<!--
可以自定义扫描那些注解
use-default-filters="false" 表示不使用它默认的扫描过滤器
-->
<context:component-scan base-package="IOC容器.Bean管理操作.注解方式" use-default-filters="false">
<!--只扫描包中带有Controller注解的类-->
<context:include-filter type="annotation"
expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<context:component-scan base-package="IOC容器.Bean管理操作.注解方式" use-default-filters="false">
<!--扫描包包中 除了带有Controller注解的 所有类-->
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
3、第三步创建类
/**
* 不加value 默认是类名 首字母小写
* <bean id="userService" class="IOC容器.Bean管理操作.注解方式.service.UserService"/>
*/
@Component(value = "userService")
public class UserService {
}
属性注入
1、@Autowird:根据属性类型进行自动装配
/**
* 注解方式注入属性 不需要添加set方法
*/
@Autowired
private UserDao userDao;
2、@Qualifier:根据属性名称进行注入 (必须和@Autowird搭配使用)
@Autowired
@Qualifier(value = "userDao")
private UserDao userDao;
3、@Resource:可以根据属性类型,也可以根据名称进行注入
/**
* @Resource 可以根据属性名称注入,也可以通过属性类型注入
*/
@Resource
private UserDao userDao;
4、@Value: 注入普通类型属性
/**
* @Value
* 为普通属性注入值
*/
@Value("abc")
private String name;
@Value("1")
private int number;
完全注解开发
1、创建配置类,替代xml 配置文件
/**
* 配置类
* @Configuration 声明当前类为配置类,替代xml
* @ComponentScan 开启组件扫描
*/
@Configuration
@ComponentScan(basePackages = {"IOC容器.Bean管理操作.注解方式"})
public class SpringConfig {
}
2.加载配置类 使用的是AnnotationConfigApplicationContext
//第一步、加载 配置类
ApplicationContext context=
new AnnotationConfigApplicationContext(SpringConfig.class);
//第二步、获取配置创建的对象
UserService userService = context.getBean("userService", UserService.class);
System.out.println(userService);