Spring的bean管理(注解)

简介

上一篇博客中我们从Spring零基础说到了通过配置文件让Spring容器管理JavaBean和JavaBean通过配置文件注入。

下面我们将说到Spring通过注释管理bean对象。通过注释注入对象等。

Spring的bean管理(注解)

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

注意:使用注解后并不能完全脱离配置文件,只是在配置文件里面不需要写这么多了而已。

导入jar包:

  1. 导入基本jar包,就是上篇博客中用到的jar包
  2. 导入aop的jar包

Spring基本包下载
aop注释包下载

创建类,创建方法:

实践目标:通过注解创建对象
@Component(value="userInit")//这里我已经提前把注解写好了
public class User {

    public void showHello(){
        System.out.println("Hello Spring Component!!!");
    }
}

创建Spring配置文件,引入约束

  • 上篇博客做了Spring的IOC中bean管理的基本功能,引入了约束beans
  • 这次做Spring注解开发,引入新的约束,context约束
<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">

整体配置:

<?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">
<!-- 
    开启注解扫描 :
    - 到包里面扫描类、方法、属性上面是否有注解
    - cn.domarvel这个配置的意思是能够扫描cn.domarvel.entity、cn.domarvel.service等等cn.domarvel包下面的。
-->

<context:component-scan base-package="cn.domarvel"></context:component-scan>

<!-- 
    配置下面这个而不配置上面这个就只会扫描属性上面的注解
-->
<!-- <context:annotation-config base-package="cn.domarvel"></context:annotation-config> -->

</beans>

测试代码:

public class UserTest {

    @Test
    public void showUserTest(){
        ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
        User user=(User)context.getBean("userInit");
        System.out.println(user);
    }
}
//到了这里通过注解创建对象就成功了。

Spring的bean管理中常用注解

@Component:组件(作用在类上)

Spring中提供@Component的三个衍生注解:(功能目前来讲是一致的)

  • @Controller———-:WEB层
  • @Service————-:业务层
  • @Repository———-:持久层

这三个注解是为了让标注类本身的用途清晰,Spring在后续版本会对其增强。

通过注解实现javabean创建对象是单实例还是多实例

在类名上边配置:@Scope(value="prototype"),默认不写Scope为单实例。属性名字是value时,属性名称可以省略。如@Scope(“prototype”)

singleton:单例
prototype:多例

@Component(value="userInit")
@Scope(value="prototype")
public class User {

    public void showHello(){
        System.out.println("Hello Spring Component!!!");
    }
}
注解注入属性

注解两种写法:

  • @Autowired
  • @Resource(name=”“),属性值写其它类创建对象的注释值。如我们创建在UserDao类里面配置@Component(“userDao”),那么在其它类注入该属性就这样写:@Resource(name=”userDao”),记住这里一定要写对
  • 一般我们用的是Resource注释注入属性

创建Service类,创建Dao类,在Service类里面得到dao对象

根据类名自动去找到对应的类帮你注入属性到方法

创建dao对象并且写上注解:
@Component("userDao")//这里可以省略了value属性名,如果不省略就是@Component(value="userDao")
public class UserDao {

    public void showDao(){
        System.out.println("Hello Dao!!!");
    }
}
创建service对象并且写上注解:
@Service("userService")
public class UserService {

    //得到dao对象:
    //定义dao类型属性
    //使用注解方式时不需要set方法,强调:两种注入属性方式都不需要set方法。
    //通过Spring配置文件方式创建对象需要set方法。
    //在dao属性上面使用注解,完成对象注入
    @Autowired
    //注意Autowired查找类的方式是通过类名查找的,再次强调,是类名,类名。和它@Component("userDao")无关,它可以随便写。变量名private UserDao userDao;也可以随便写!!!
    private UserDao userDao;

    public void showService(){
        System.out.println("show UserService!!!");
        userDao.showDao();
    }
}
测试类:
    @Test
    public void showUserService(){
        ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
        UserService userService=(UserService)context.getBean("userService");
        userService.showService();
    }

配置文件和注解混合使用

1.创建对象操作使用配置文件方式实现
2.注入属性的操作使用注解方式实现

创建类:
public class BookDao {
    public void showBook(){
        System.out.println("Book Dao!!!");
    }
}
public class BookService {

    @Resource(name="bookDao")
    private BookDao bookDao;

    public void showBookService(){
        System.out.println("show BookService!!");
        bookDao.showBook();
    }
}
<!-- 配置文件 -->
<?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.domarvel"></context:component-scan>
<bean id="bookDao" class="cn.domarvel.dao.BookDao"></bean>
<bean id="bookService" class="cn.domarvel.service.BookService"></bean>

</beans>
//测试类:
public class BookTest {

    @Test
    public void showBookInject(){
        ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
        BookService bookService=(BookService)context.getBean("bookService");
        bookService.showBookService();
    }
}
//运行结果:
/*
show BookService!!
Book Dao!!!
*/
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值