@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");

}

}

Spring容器组建注解@Component和Resouces实现完全注解配置的更多相关文章

  1. 理解Spring 容器、BeanFactory 以及 ApplicationContext

    一.spring 容器理解 spring 容器可以理解为生产对象(Object)的地方,在这里容器不只是帮助我们创建对象那么简单,它负责了对象的整个生命周期-创建.装配.销毁.而这里对象的创建管理的控 ...

  2. 获取spring容器上下文(webApplicationContext)的几种方法

    在很多情况,我们需要先获取spring容器上下文,即webApplicationContext,然后通过webApplicationContext来获取其中的bean.典型的情况是,我想在一个并未委托 ...

  3. 【Spring】简述@Configuration配置类注册BeanDefinition到Spring容器的过程

    概述 本文以SpringBoot应用为基础,尝试分析基于注解@Configuration的配置类是如何向Spring容器注册BeanDefinition的过程 其中主要分析了 Configuratio ...

  4. springBoot中怎么减少if---else,怎么动态手动注册类进入Spring容器

    由于业务中经常有需要判断的if--eles操作,层层嵌套,看起来程序的可读性太差,结合策略模式进行改造 方法一.一般有策略模式  +  工厂模式进行代码的优化,减少 if---else: 方法二.还有 ...

  5. Spring < context:annotation-config> 、< context:component-scan>、< mvc:annotation-driven />注解配置

    Spring 中在使用注解(Annotation)会涉及到< context:annotation-config> 和 < context:component-scan>配置, ...

  6. bean的自动装配,使用注解开发,使用java的方式配置Spring

    bean的自动装配 自动装配是Spring满足bean依赖一种方式! Spring会在上下文中自动寻找,并自动给bean装配属性! 在Spring中有三种装配的方式 在xml中显示的配置 在java中 ...

  7. Spring使用注解开发及使用java类进行配置bean

    Spring使用注解开发 说明 在spring4之后,想要使用注解形式,必须得要引入aop的包 在配置文件当中,还得要引入一个context约束 <?xml version="1.0& ...

  8. Spring容器

    1.Spring简介: a)Spring春天 b)官网:https://spring.io c)设计理念:轮子理念,不要重复创造轮子: d)Spring可以被理解为一个容器,用于管理其他的框架: e) ...

  9. springMVC容器和Spring容器

    前段时间有人问我,为什么一定要在web.xml中配置spring的listener呢? <listener> <description>spring监听器</descri ...

随机推荐

  1. HTML超文本

    1.HTML链接 2.HTML表格 3.HTML图像 4.HTML列表 5.HTML块 6.HTML布局 7.HTML表单 1.HTML链接 (1)给文字及图片添加超链接 < html> ...

  2. 由throw new Error() 引发的探讨

    问题复现 在工作时遇到了需要抛出异常并且需要自己捕获处理的地方,于是在抛出的地方写下 function parseExcel(con) { try { // doSomething } catch ( ...

  3. day09<面向对象+>

    面向对象(多态的概述及其代码体现) 面向对象(多态中的成员访问特点之成员变量) 面向对象(多态中的成员访问特点之成员方法) 面向对象(多态中的成员访问特点之静态成员方法) 面向对象(超人的故事) 面向 ...

  4. Day4 装饰器——迭代器——生成器

    一 装饰器 1.1 函数对象 一 函数是第一类对象,即函数可以当作数据传递 #1 可以被引用 #2 可以当作参数传递 #3 返回值可以是函数 #3 可以当作容器类型的元素 二 利用该特性,优雅的取代多 ...

  5. C#操作SqlServer MySql Oracle通用帮助类Db_Helper_DG(默认支持数据库读写分离、查询结果实体映射ORM)

    [前言] 作为一款成熟的面向对象高级编程语言,C#在ADO.Net的支持上已然是做的很成熟,我们可以方便地调用ADO.Net操作各类关系型数据库,在使用了多年的Sql_Helper_DG后,由于项目需 ...

  6. spring web.xml配置

    <!--推荐使用此种方式-->  <listener> <listener-class> org.springframework.web.context.Conte ...

  7. Android打包版本号设置

    之前没有设置过打包的命名,每次打包都是默认的"app-realease.apk",之后手动修改名字来显示出它是一个新版本. 晚上学习了如何配置打包名称,很简单,修改build.gr ...

  8. poj2823一道纯单调队列

    Sliding Window Time Limit: 12000MS   Memory Limit: 65536K Total Submissions: 32099   Accepted: 9526 ...

  9. django ajax练习

    这几天遇到了django ajax请求出错的问题,总结一下 前端js:我这里创建的是一个字典格式的数据,前端js收到字典之后也是要用字典的形式去解包后台传送过来的数据,比如我下面的写法:data['s ...

  10. Python in/not in --- if not/if + for...[if]...构建List+ python的else子句

    区分几个容易出错的地方: in 成员运算符 - 如果字符串中包含给定的字符返回 True >>>"H" in a True not in 成员运算符 - 如果字符 ...