- 概念
是代码的特殊标记,详见 Java五十九: 注解 Annotation_e_n的博客
- 格式
@注解名称(属性名称=属性值,属性名称=属性值,…)
- 作用范围
类、方法、属性
- 目的
简化xml配置,使其更优雅简洁
- 使用到的四个注解 ① @Component
用于Spring容器中提供的普通组件
② @Service用于业务逻辑层
③ @Controller用于web层
④ @Repository用于dao层
- 引入依赖
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ixz4YJcZ-1650896352728)(F:MarkDown学习图片素材-1SpringIOC-注解注解所需依赖.jpg)]
- 在spring配置文件中开启组件扫描
- 创建类,在类上面添加创建对象注解
// 注解内的值可以不写,默认值是类名的首字母小写 @Service(value="userService") public class UserService { public void add() { System.out.println("serviceceng"); } } - 开启组件扫描的注意点
- 四个常用注解 ① @Autowired
根据属性类型进行自动装配
② @Qualifier根据属性名称进行注入
和@Autowired一起使用,因为当接口有多个实现类时,根据接口类型匹配到多个类,再使用@Qualifier锁定属性名称即可准确定位
③ @Resource可根据类型注入,也可根据属性名称注入
④ @Value注入普通类型属性
- 代码示例
// 注解内的值可以不写,默认值是类名的首字母小写 @Service public class UserService { @Value(value = "abc") private String name; // @Autowired // @Qualifier(value = "userDAOImpl2") @Resource(name = "userDAOImpl2") private UserDAO userDAO; public void add() { System.out.println("service - add..."+name); userDAO.add(); } } @Repository(value="userDAOImpl2") public class UserDAOImpl implements UserDAO{ @Override public void add() { System.out.println("dao - add..."); } }
- 创建配置类,替代xml配置文件
@Configuration @ComponentScan(basePackages = {"com.atguigu"}) public class SpringConfig { } - 测试类
public class TestSpring { @Test public void testSpring1() { // 加载类改为:AnnotationConfigApplicationContext AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class); UserService userService = context.getBean("userService", UserService.class); userService.add(); } }



