Spring框架学习(二)--注解开发

本文详细介绍Spring框架中注解的使用,包括注解的基本概念、如何使用注解进行依赖注入,以及@Scope、@Component、@Service、@Repository等核心注解的功能解析。文章还对比了@Autowired和@Resource注解的使用差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring 的bean管理(注解)

  • 注解的介绍

1.代码里面特殊标记,使用注解可以完成功能。
2.注解写法 @注解名称(属性名称=属性值)。
3.注解使用在类上面,方法上面 和 属性上面

  • 一.Spring注解开发准备
    • 1.导入jar包
      • (1)导入基本jar包
        在这里插入图片描述
      • (2)导入aop的jar包
        在这里插入图片描述
  • 2.创建类User,创建方法add()
public class User {
   public void add(){
   	System.out.println("add.............");
   }
}
  • 3.创建spring配置文件applicationContext.xml,引入约束
    * Spring学习第一天做IOC基本功能时,引入约束beans
    * 做Spring的IOC注解开发,需要引入新的约束context
// 新增Spring的context约束
  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 

//完整约束如下:

<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"> <!-- bean definitions here -->

  • 开启注解扫描
  <!-- 开启注解扫描  到包里面扫描类、方法、属性上面是否有注解-->
     <context:component-scan base-package="edu.njxzc.anno"></context:component-scan>
     <!-- 只会扫描属性上的注解 -->
     <!-- <context:annotation-config></context:annotation-config> -->
  • 二.注解创建对象

    • 1、在创建对象的类上面使用注解
    	@Component(value="user")//<bean id="user" class="">
    	public class User {
    		public void add(){
    			System.out.println("add.............");
    		}
    	}
    
    • 测试注解实现的IOC是否成功
       @Test
    public void testUser(){
    	ApplicationContext context=
    		new ClassPathXmlApplicationContext("applicationContext.xml");
    	User user=(User) context.getBean("user");
    	System.out.println(user);
    	user.add();
    	User user1=(User) context.getBean("user");
    	System.out.println(user.equals(user1));
    }
    

    测试代码成功运行,同时user和user1显示为同一对象,这是因为Spring创建的bean默认都是singleton单实例的,如果想要创建出的User对象为多实例,需要在User类的加@Scope(value=“prototype”)注解

    • 三.Spring注解详解
      • 1.Spring创建对象有四个注解,其他三个为@Component的衍生注解(功能目前基本一致,都是创建出对象)
        * @Controller : WEB层
        * @Service : 业务层
        * @Repository : 持久层
        • 2.通过@Scope(value=“prototype”)注解可以设置创建的对象为多实例
        • 3.注解注入属性
          • (1) 创建service类,创建dao类,并通过注解得到对象
   	              @Component(value="userDao123")
   				public class UserDao {
   					public void add(){
   						System.out.println("UserDao........");
   					}
   				}
   @Service(value="userService")
public class UserService {
   public void add(){
   	System.out.println("service...........");
   	userDao.add();
   }
}
  • (2).在service类里面定义Userdao属性,并通过@Autowired注解或者@Resource注解注入
@Service(value="userService")
   public class UserService {
   	//得到dao对象
   	//1、定义Dao类型的属性 在Dao属性上使用注解完成对象的注入
   	//@Autowired
   	//private UserDao userDao;
   	@Resource(name="userDao123")
   	private UserDao userDao;
   	public void add(){
   		System.out.println("service...........");
   		userDao.add();
   	}
   		public UserDao getUserDao() {
   	        return userDao;
         }
}
    1. 测试
@Test
	public void testUserService(){
		ApplicationContext context=
			new ClassPathXmlApplicationContext("applicationContext.xml");
		UserService userService=(UserService) context.getBean("userService");
		System.out.println(userService);
		userService.getUserDao().add();
	}
  • @Autowired和@Resource注解使用的注意点:
    • @Autowired注解根据类名找到对象并注入,与@Component(value=“userDao”)中的value值无关;而@Resource注解中name属性值写的是注解创建dao对象的注解中的value值
    • 使用注解方式时不需要生set方法
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值