再来聊一聊Spring是如何通过注解的方式来管理Bean的

一、什么是注解?

可以从下面三个维度理解注解:

  • 代码里的特殊标记,使用注解可以完成一些功能
  • 注解写法:@注解名称(属性名称=属性值)
  • 注解可以使用在类上面、方法上面以及属性上面

二、使用注解创建对象

创建对象时可以使用下面注解:

  • @Component
  • @Controller,常用与Web层
  • @Service,常用于业务层
  • @Repository,常用与持久层

目前来讲,这四个注解功能都是一样的,都是创建对象。
可以使用下面这个注解来设置类创建的对象是单例的还是实例的:

  • @Scope(value=“prototype”)

下面用一个具体的例子来讲一下Spring是如何通过注解来创建对象的。

1)创建类

@Component(value="user")
public class User{
    public void add(){
        System.outt.println("add...");
    }
}
2)创建配置文件并引入约束

在前面博客的例子中,由于只用到了IOC基本功能,因此只需要引入beans约束;这个例子中,由于需要引入IOC的注解功能,需要另外引入context约束。

<?xml version="1.0" encoding="UTF-8"?>
<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"> 
    <!--开启注解扫描-->
    <context:component-scan base-package="cn.itcast.anno">

</beans>

3)测试

public class testAnno{
    @Test
    public void testUser(){
        ApplicationContext context = ClassPathXmlApplicationContext("bean1.xml");
        User user = (User) context.getBean("user");
        user.add();
    }
}

三、使用注解注入属性

场景:创建service类、创建dao类,在service中的得到dao对象

@Component(value="userDao")
public class UserDao{
    public void add(){
        System.out.println("dao...");
    }
}

@Component(value="userService")
public class UserService{
    @Resource //@Autowired
    private UserDao userDao;

    public void add(){
        System.out.println("service...");
        System.out.println(userDao.add());
    }
}

四、配置文件方式和注解方式混合使用

  • 创建对象操作通常使用配置文件的方式来实现
  • 注入属性的操作通常使用注解的方式来实现

1)创建类

public class OrderDao{
    public void buy(){
        System.out.println("ordersdao...");
    }
}

public class BookDao{
    public void book(){
        System.out.println("bookdao...");
    }
}

public class BookService{
    
    @Resource(name="bookDao")
    private BookDao bookDao;

    @Resource(name="ordersDao")
    private OrdersDao ordersDao;

    public void add(){
         System.out.println("service...");
         ordersDao.buy();
         bookDao.book();
    } 
}

2)配置文件

<!--开启注解扫描-->
    <context:component-scan base-package="cn.itcast.anno">

<!--配置对象-->
    <bean id="bookService" class="cn.itcast.xmlanno.BookServicec"></bean>
    <bean id="orderDao" class="cn.itcast.xmlanno.OrderDao"></bean>
    <bean id="bookDao" class="cn.itcast.xmlanno.BookDao"></bean>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值