Spring入门Blog[五、Spring容器组建注解@Component和Resouces实现完全注解配置]

@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"); } }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值