@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框架核心概念的关键。 首先,`@Component`是Spring框架中的一个元注解,它用于标记一个类为Spring管理的Bean。当你在类定义上添加`@Component`时,Spring会自动扫描到这个类...
在基于 xml 的 Spring 配置中,可以添加 <context:annotation-config /> 和 <context:component-scan />,或者只使用 <context:component-scan />。而在基于配置类的 Spring 配置中,可以使用 ...
除了@Service和@Resource,Spring还提供了一些其他常见的注解,包括@Controller(用于控制器,如Struts中的action)、@Repository(用于DAO层组件,数据访问组件)和@Component(通用注解,当组件类别不确定时使用)...
理解并熟练使用`@Component`和`@Resource`注解对于构建基于Spring的Java应用程序至关重要。`@Component`用于声明bean,`@Resource`则负责依赖注入。在Spring MVC中,`@Controller`配合其他请求映射注解,使我们能够...
通过`@Component`、`@Service`、`@Repository`等注解,我们可以快速地将类声明为Spring管理的Bean,而`@Autowired`和`@Resource`则负责自动装配依赖。这种配置方式减少了XML配置文件的复杂性,提升了开发效率。
本部分主要关注以下五个关键注解:`@Component`、`@Value`、`@Resource`、`@Autowired`以及生命周期方法注解`@PostConstruct`和`@PreDestroy`。 1. **`@Component`**:这个注解是Spring中的基础组件注解,用于标记...
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/jsp/" /> <property name="suffix" value=".jsp" /> <!-- 配置jdbc --> ...
<component name="FacetManager"> <facet type="web" name="Web"> <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/src/main/webapp/WEB-INF/web.xml" /> <root url="file://$MODULE_...
例如,在使用JPA注解进行ORM映射时,当关系数据库表的字段与POJO对象属性名称和类型一致时,无需额外编写属性映射信息。 2. **提高代码内聚性**:注解与Java代码位于同一个文件中,使得配置信息与业务逻辑紧密相连...
@Resource 有两个属性,name 和 type,分别用于指定 Bean 的名称和类型。 二、类的注册 在 Spring 3.x 中,提供了多种用于类注册的注解,如 @Component、@Repository、@Service、@Controller 等。 1. @Component ...
<?xml version="1.0" encoding="UTF-8"?> ... 对web包中的所有类进行扫描,... <mvc:resources mapping="/resource/**" location="/resource/" /> <mvc:resources mapping="/jsp/**" location="/jsp/" /> </beans>
@Component@ServerEndpoint(value = "/websocket/{name}")public class WebSocketServer { @Resource ConcurrentHashMapUtil concurrentHashMapUtil; //静态变量,用来记录当前在线连接数。应该把它设计成线程安全的...
-- Component name of an activity that allows the user to modify the current settings for this wallpaper. --> <attr name="settingsActivity" format="reference" /> <!-- Reference to a the wallpaper's ...
@Resource(name = "beanName") private ISoftPMService softPMService; ``` ##### 2. @Scope - **定义**:`@Scope`注解用于指定bean的作用域,如单例(singleton)、原型(prototype)等。 - **示例**: ```...
@Component("userService")等价于在spring配置文件中定义一个<bean id="userService"/> @Resource(name="userDAO")将userDA注入进来 写一个拦截器的类 package com.spring.aop; import org.springframework....
-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> <!-- apache.dbcp连接池的配置 --> ...
该注解通常与`@Repository`、`@Service`和`@Controller`一起使用,分别用于表示数据访问层、业务逻辑层和服务接口层的组件。 - **功能**: 标记类为组件,并由Spring容器管理。它类似于XML配置中的`<bean>`元素。 - ...
Action类需添加`@Component`注解,并使用`@Resource`注解来注入Service,如: ```java @Component("loginAction") public class LoginAction extends ActionSupport implements ModelDriven { @Resource private ...
《bean-resource的用法详解》 在Java应用开发中,特别是Spring框架的使用中,`bean-resource`是一个关键的...通过学习和熟练掌握`bean-resource`的配置和使用,开发者能够更好地利用Spring框架进行企业级应用的开发。
- 示例用法:`@Resource(name="userRepository") private UserRepository userRepository;` #### 四、`@Enable***` 类型注解的使用方式 这类注解主要用于开启框架的特定功能,它们通常会在 Spring Boot 应用中...