`

@Component(“”)和@resource(name=””)的使用:

阅读更多

  @Component(“”)和@resource(name=””)的使用:

spring的配置文件配置:

  <?xml version="1.0" encoding="UTF-8"?>

<beansxmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xmlns:context="http://www.springframework.org/schema/context"

       xmlns:aop="http://www.springframework.org/schema/aop"

       xmlns:tx="http://www.springframework.org/schema/tx"

       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-3.0.xsd

         http://www.springframework.org/schema/tx

     http://www.springframework.org/schema/tx/spring-tx-3.0.xsd

     http://www.springframework.org/schema/aop

     http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

    

<!-- 扫描com.test 包,主要获取@Resource/@Component等-->

<context:component-scanbase-package="com.test"/>

<beans>

配置<context:component-scan base-package="com.test" />解析:

使用ClassPathXmlApplicationContext("bean.xml")初始化bean.xml的时候,或者说初始化spring配置文件的时候,会自动扫描com.test下的所有包,若发现有@component,则将该类初始化为一个对象,对象的key为@component("name")中指明的name,若不指明,则默认为类的名字首字母小写;当调用ctx.getBean("userService"),时,则查看容器是否有一个名字为userService;如有则在初始化这个类得过程中,如果发现@Resource(name=”u”);则查看容器是否有名字叫u的bean,若有则将u注入到方法参数中,而后参数就会传人方法内,当然也就注入了成员变量里:


UserService.java文件中使用:

@Component("userService")

publicclassUserService{

    privateUserDAO userDAO =newUserDAOImpl();

    privateUserLogDAO userLogDAO;

 

    publicUserDAO getUserDAO(){

       return userDAO;

    }

    publicUserLogDAO getUserLogDAO(){

       return userLogDAO;

    }

    @Resource(name="ulog")

    publicvoid setUserLogDAO(UserLogDAO userLogDAO){

       this.userLogDAO = userLogDAO;

    }

    @Resource(name="u")

    publicvoid setUserDAO(UserDAO userDAO){

       this.userDAO = userDAO;


 

    }

 

 

UserDAOImpl.java中使用:

 

  @Component("u")

publicclassUserDAOImplimplementsUserDAO{

    privateSessionFactory  sessionFactory;

   

 

    publicSessionFactory getSessionFactory(){

       return sessionFactory;

    }

 

    @Resource

    publicvoid setSessionFactory(SessionFactory sessionFactory){

       this.sessionFactory = sessionFactory;

    }

    @Override

    publicvoid save(User u){

           Session s=sessionFactory.openSession();//.getCurrentSession();

           //s.beginTransaction();

           s.save(u);

       System.out.println("a user save,XXXX!");

    }

 

}

 

 
使用上述的@Component和@resource注解,相当于spring使用了如下的配置:

  这样就可以省去之前在bean中所写的:

<!-- 

  <bean id="u"class="com.test.dao.impl.UserDAOImpl">

  </bean>

  <bean id="UserService" class="com.test.service.UserService">

    <property name="UserDAO" ref="u" />       

  </bean>

分享到:
评论

相关推荐

    spring框架的@Resource和@Component 程序和文档

    理解这两个注解的使用和区别是掌握Spring框架核心概念的关键。 首先,`@Component`是Spring框架中的一个元注解,它用于标记一个类为Spring管理的Bean。当你在类定义上添加`@Component`时,Spring会自动扫描到这个类...

    详解Spring依赖注入:@Autowired,@Resource和@Inject区别与实现原理

    在基于 xml 的 Spring 配置中,可以添加 &lt;context:annotation-config /&gt; 和 &lt;context:component-scan /&gt;,或者只使用 &lt;context:component-scan /&gt;。而在基于配置类的 Spring 配置中,可以使用 ...

    Spring 中 @Service 和 @Resource 注解的区别

    除了@Service和@Resource,Spring还提供了一些其他常见的注解,包括@Controller(用于控制器,如Struts中的action)、@Repository(用于DAO层组件,数据访问组件)和@Component(通用注解,当组件类别不确定时使用)...

    spring注解属性的用法

    理解并熟练使用`@Component`和`@Resource`注解对于构建基于Spring的Java应用程序至关重要。`@Component`用于声明bean,`@Resource`则负责依赖注入。在Spring MVC中,`@Controller`配合其他请求映射注解,使我们能够...

    Spring的Annotation配置相关讲义

    通过`@Component`、`@Service`、`@Repository`等注解,我们可以快速地将类声明为Spring管理的Bean,而`@Autowired`和`@Resource`则负责自动装配依赖。这种配置方式减少了XML配置文件的复杂性,提升了开发效率。

    spring4框架系列 [ 5 ]

    本部分主要关注以下五个关键注解:`@Component`、`@Value`、`@Resource`、`@Autowired`以及生命周期方法注解`@PostConstruct`和`@PreDestroy`。 1. **`@Component`**:这个注解是Spring中的基础组件注解,用于标记...

    SpringMVC-SSH全注解

    &lt;property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /&gt; &lt;property name="prefix" value="/jsp/" /&gt; &lt;property name="suffix" value=".jsp" /&gt; &lt;!-- 配置jdbc --&gt; ...

    案例最终的代码实现,上传至服务器

    &lt;component name="FacetManager"&gt; &lt;facet type="web" name="Web"&gt; &lt;deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/src/main/webapp/WEB-INF/web.xml" /&gt; &lt;root url="file://$MODULE_...

    spring注解

    例如,在使用JPA注解进行ORM映射时,当关系数据库表的字段与POJO对象属性名称和类型一致时,无需额外编写属性映射信息。 2. **提高代码内聚性**:注解与Java代码位于同一个文件中,使得配置信息与业务逻辑紧密相连...

    spring3.x注解

    @Resource 有两个属性,name 和 type,分别用于指定 Bean 的名称和类型。 二、类的注册 在 Spring 3.x 中,提供了多种用于类注册的注解,如 @Component、@Repository、@Service、@Controller 等。 1. @Component ...

    SpringMVC+Hibernate全注解整合

    &lt;?xml version="1.0" encoding="UTF-8"?&gt; ... 对web包中的所有类进行扫描,... &lt;mvc:resources mapping="/resource/**" location="/resource/" /&gt; &lt;mvc:resources mapping="/jsp/**" location="/jsp/" /&gt; &lt;/beans&gt;

    springboot 集成 webSocket

    @Component@ServerEndpoint(value = "/websocket/{name}")public class WebSocketServer { @Resource ConcurrentHashMapUtil concurrentHashMapUtil; //静态变量,用来记录当前在线连接数。应该把它设计成线程安全的...

    Android动态壁纸的制作教程.pdf

    -- Component name of an activity that allows the user to modify the current settings for this wallpaper. --&gt; &lt;attr name="settingsActivity" format="reference" /&gt; &lt;!-- Reference to a the wallpaper's ...

    Spring注解收集1

    @Resource(name = "beanName") private ISoftPMService softPMService; ``` ##### 2. @Scope - **定义**:`@Scope`注解用于指定bean的作用域,如单例(singleton)、原型(prototype)等。 - **示例**: ```...

    Spring AOP配置源码

    @Component("userService")等价于在spring配置文件中定义一个&lt;bean id="userService"/&gt; @Resource(name="userDAO")将userDA注入进来 写一个拦截器的类 package com.spring.aop; import org.springframework....

    springjdbc

    -- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --&gt; &lt;bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /&gt; &lt;!-- apache.dbcp连接池的配置 --&gt; ...

    基于注解的DI.docx

    该注解通常与`@Repository`、`@Service`和`@Controller`一起使用,分别用于表示数据访问层、业务逻辑层和服务接口层的组件。 - **功能**: 标记类为组件,并由Spring容器管理。它类似于XML配置中的`&lt;bean&gt;`元素。 - ...

    java ee ssh整合过程

    Action类需添加`@Component`注解,并使用`@Resource`注解来注入Service,如: ```java @Component("loginAction") public class LoginAction extends ActionSupport implements ModelDriven { @Resource private ...

    00000032_bean-resource的用法.rar

    《bean-resource的用法详解》 在Java应用开发中,特别是Spring框架的使用中,`bean-resource`是一个关键的...通过学习和熟练掌握`bean-resource`的配置和使用,开发者能够更好地利用Spring框架进行企业级应用的开发。

    java注解整理

    - 示例用法:`@Resource(name="userRepository") private UserRepository userRepository;` #### 四、`@Enable***` 类型注解的使用方式 这类注解主要用于开启框架的特定功能,它们通常会在 Spring Boot 应用中...

Global site tag (gtag.js) - Google Analytics