Spring容器组建注解@Component和Resouces实现完全注解配置

本文介绍如何使用@Resource和@Component实现Spring框架中的零XML配置。通过具体的示例代码展示了如何利用@Component注解结合<context:component-scan>实现无XML配置,并通过@Resource进行依赖注入。
摘要由CSDN通过智能技术生成

@Resource和@Component实现零XML配置  

1、@Resource的注解:  

@Resource是J2EE的注解。意思是说在容器里面找相应的资源。也可以通过name属性指定它name的资源。可以注解到field或者setter上面  

public class UserAction {  

    private UserService userService;  

    @Resource(name="userService")  

    public void setUserService(UserService userService) {  

        this.userService = userService;  

    }  

    public void addUser(){  

        userService.HelloWorld();  

    }  

}  

2、@Component  

@Component和<context:component-scan base-package="com.spring"></context:component-scan>配合实现无XML配置,只通过注解配置及可将类放入资源容器中。  

案例解析:  

1、  xml文件:配置容器资源扫描的包  

<?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-2.5.xsd           http://www.springframework.org/schema/context           http://www.springframework.org/schema/context/spring-context-2.5.xsd">;      <context:annotation-config/>      <!-- 配置容器资源扫描的包 -->     <context:component-scan base-package="com.spring"></context:component-scan>  </beans>  2、  Java文件:  标注资源的注解@Component。括号里面指定的是存入容器的name属性为userService  那么将来我们拿的时候则getBean(“userService”)即可。如果我们不指定userService它默认存入容器bean的key为userServiceImpl这样就可以得到一个装有UserServiceImpl对象的容器  

package com.spring.service;  

import org.springframework.stereotype.Component;  

import com.spring.dao.UserDao;  

@Component("userService")  

public class UserServiceImpl implements UserService{  

    private UserDao userDao;  

    public void init(){  

        System.out.println("init");  

    }  

    public void destory(){  

        System.out.println("destory");  

    }  

    public UserDao getUserDao() {  

        return userDao;  

    }  

    public void setUserDao(UserDao userDao) {  

        this.userDao = userDao;  

    }  

    public void HelloWorld(){  

        System.out.println("helloworld");  

    }  

}  

通过@Resource将资源注入进来  

因为上文已经配置了容器里面的资源。所以我这里将资源通过@Resource注解将资源注入到相关的属性。请看代码:  

@Component("userAction")  

public class UserAction {  

    private UserService userService;  

    //它会将beans的xml文件配置加入进去  

    //也可以使用name属性指定byName的指定  

    @Resource(name="userService")  

    public void setUserService(UserService userService) {  

        this.userService = userService;  

    }  

    public void addUser(){  

        userService.HelloWorld();  

    }  

}  

测试实现:  

通过上文配置的userAction案例来得到这个对象然后调用它里面的方法,因为上文通过了@ Component注解将UserAction的对象配置到了容器里面。所以获得容器之后就可以用这种方法getbean即可  

    @Test  

    public void test01(){  

        BeanFactory applicationContext = new ClassPathXmlApplicationContext("beans.xml");  

        UserAction user = (UserAction) applicationContext.getBean("userAction");  

        user.addUser();  

    }  

@Scope和@PostConstruct、@PreDestroy  

很简单就相当于前面讲到的作用于和initmethod和destorymethod请看下面代码。不再多说:  

@Scope("Singleton")  

@Component("userService")  

public class UserServiceImpl implements UserService{  

    private UserDao userDao;  

    @PostConstruct  

    public void init(){  

        System.out.println("init");  

    }  

    @PreDestroy  

    public void destory(){  

        System.out.println("destory");  

    }  

    public UserDao getUserDao() {  

        return userDao;  

    }  

    public void setUserDao(UserDao userDao) {  

        this.userDao = userDao;  

    }  

    public void HelloWorld(){  

       System.out.println("helloworld");  

    }  

}  

转载于:https://www.cnblogs.com/congcong1024/p/7772046.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值