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