@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. oracle-获取数据库中所有表的注释 comments

    公司dba提供的脚本: set serveroutput on set feedback off spool /tmp/getcomments.out select 'comment on table ...

  2. Log4j.properties属性文件

    log4j.properties文件属性介绍log4j.rootLogger = [ level ] , appenderName1, appenderName2, …#level : 设定日志记录的 ...

  3. RobotFramework自动化测试框架-移动手机自动化测试Clear Text关键字的使用

    Clear Text关键字用来清除输入框的数据,该关键字接收一个参数[ locator ],这里的locator指的就是界面元素的定位方式. 示例1:Clear Text清除输入框数据时,采用reso ...

  4. Centos7搭建kubernetes搭建

    安装前的准备工作: Kubernetes包提供了一些服务:kube-apiserver,kube-scheduler,kube-controller-manager,kubelet,kube-prox ...

  5. Find 找规律,递推

    Find Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) SubmitStatus P ...

  6. Painter's Problem poj1681 高斯消元法

    Painter's Problem Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 4420   Accepted: 2143 ...

  7. Rectangles hdu2461容斥定理

    Rectangles Time Limit: 5000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  8. hdu1760博弈SG

    A New Tetris Game Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  9. python之路第二篇(基础篇)

    入门知识: 一.关于作用域: 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. if 10 == 10: name = 'allen' print name 以下结论对吗? ...

  10. Fix “Could not flush the DNS Resolver Cache: Function failed during execution” When Flushing DNS

    ipconfig /flushdns It is possible that you’re getting an error message “Could not flush the DNS Reso ...