如下代码:在自动注入是采用 @Autowired 可以 但是为什么使用@Resource不行呢
在网上看了几个@Autowired和@Resource的区别 但还是不明白两个具体不同的配置
HelloController类
public class HelloController implements Controller{
private Logger logger = Logger.getLogger(this.getClass().getName());
private String helloWorld; // 该属性用于获取配置文件中的helloWorld属性
private String viewPage; // 用于获取配置文件中的viewPage属性
@Autowired 为什么不能使用@Resource
private HelloService helloService;
@SuppressWarnings("unchecked")
public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException {
// 在该方法中处理用户请求
Map model = new HashMap();
model.put("helloWorld", getHelloWorld());
String ss=helloService.getId();
//model.put("id",helloService.getId());
//req.setAttribute("ss",ss);
// 将helloWorld属性存入model中
res.getWriter().write(ss);
return null;
// 调用getViewPage获取要返回的页面
}
public void setViewPage(String viewPage){
this.viewPage = viewPage;
}
public String getViewPage(){
return this.viewPage;
}
public void setHelloWorld(String helloWorld){
this.helloWorld = helloWorld;
}
public String getHelloWorld(){
return this.helloWorld;
}
}
HelloDao类
@Repository
public class HelloDao {
static ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//得到数据源
private static DataSource ds=(DataSource) context.getBean("dataSource");
static JdbcTemplate jt1=(JdbcTemplate) context.getBean("jt");
public String getId(){
String sql =" select * from test order by id asc limit 1 ";
Map map =jt1.queryForMap(sql);
System.out.println(""+map.get("id"));
return map.get("id").toString();
}
}
HelloService类
@Service
public class HelloService {
@Autowired 为什么不能使用@Resource
private HelloDao helleDao;
@Cacheable(modelId="testCaching")
public String getId(){
helleDao.getId();
return helleDao.getId();
}
}
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:ehcache="http://www.springmodules.org/schema/ehcache"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springmodules.org/schema/ehcache
http://www.springmodules.org/schema/cache/springmodules-ehcache.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
" default-autowire="byName">
<context:annotation-config/>
<bean id="jt" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref local="dataSource" />
</property>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>root</value>
</property>
</bean>
<context:component-scan base-package="test.t" ></context:component-scan>
<ehcache:config configLocation="classpath:ehcache.xml" id="cacheProvider"/>
<ehcache:annotations providerId="cacheProvider">
<ehcache:caching cacheName="testCache" id="testCaching"/>
<ehcache:flushing cacheNames="testCache" id="testFlushing" />
</ehcache:annotations>
</beans>
dispatcherServlet-servlet.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver">
</bean>
<!--配置控制器的映射-->
<bean id="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="helloWorld.do">helloWorldAction</prop>
</props>
</property>
</bean>
<!--配置视图-->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass">
<value>
org.springframework.web.servlet.view.InternalResourceView
</value>
</property>
</bean>
<!--指定控制器的实现类,并且配置其参数的值-->
<bean id="helloWorldAction"
class="test.t.HelloController">
<property name="helloWorld">
<value>Hello Spring World!</value>
</property>
<property name="viewPage">
<value>sayHello.jsp</value>
</property>
</bean>
<import resource="classpath:applicationContext.xml"/>
</beans>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>simpleservlet</servlet-name>
<servlet-class>test.SimpleServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>simpleservlet</servlet-name>
<url-pattern>/simpeservlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
</web-app>
分享到:
相关推荐
在Spring框架中,`@Resource`和`@Component`是两个重要的注解,它们用于不同的目的,但都与依赖注入(Dependency Injection,简称DI)息息相关。理解这两个注解的使用和区别是掌握Spring框架核心概念的关键。 首先...
在本文中,我们将详细地解释 SpringMVC 中常用的注解标签,包括@Controller、@RequestMapping、@Resource 和@Autowired 等。 1. @Controller @Controller 是 SpringMVC 中最基本的注解之一,该注解用于标记一个类...
@Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入。 1、共同点 两者都可以写在字段和setter方法上。两者...
【SpringMvc注解详解】 ...通过这些注解,SpringMVC 能够以声明式的方式处理 Web 请求,大大提高了开发效率,同时也使得代码更加清晰和模块化。了解并熟练运用这些注解,是成为 SpringMVC 开发者的必备技能。
9. **资源处理**:Spring MVC提供`@ResourceMapping`注解,用于处理静态资源或RESTful服务。 10. **类型转换**:`@InitBinder`注解可以自定义数据绑定的行为,例如设置日期格式或限制输入字段的长度。 全注解配置...
总结,SpringMVCmybatisFrm项目利用SpringMVC处理Web请求,MyBatis进行数据操作,Maven管理依赖和构建流程,`@Resource`注解实现依赖注入。这样的组合为Java Web开发提供了一套强大的解决方案,让开发者能够专注于...
本篇文章将深入探讨SpringMVC的基础概念、工作原理及其核心注解的应用方式。 #### SpringMVC简介 SpringMVC是一个基于Spring框架的轻量级Web应用框架,它实现了MVC设计模式。MVC(Model-View-Controller)模式将...
这两个注解分别标识在bean初始化后和销毁前需要执行的方法,提供了一种在生命周期中执行特定逻辑的方式。 10. **@Repository**: `@Repository`注解用于标记数据访问组件,如DAO。它将异常转换为Spring的...
在火狐中显示可能会有问题,大家都是程序员,改个参数就好啦 注解包含: 拦截器 , 过滤器 , 序列化 , @After , @AfterReturning , @AfterThrowing , @annotation , @Around , @Aspect , @Autowired , @Bean , @Before ,...
### 基于注解的SpringMVC Demo详解 #### 概述 本文将详细介绍一个基于注解的SpringMVC示例项目,该示例涵盖了从环境搭建到具体功能实现的全过程。通过这个示例,我们可以了解到如何在SpringMVC框架下使用注解来简化...
- 方式二:使用`@ComponentScan`注解,指定包名,Spring会自动扫描指定包及其子包下的`@Controller`注解类。 2. **@RequestMapping**:这个注解用于将HTTP请求映射到控制器的方法。可以在类级别和方法级别使用,类...
Spring MVC XML和注解方式开发详解 一、Spring MVC简介 Spring MVC是一种基于Java的Web应用框架,属于Spring Framework的一部分。它提供了一个灵活的、模块化的Web应用开发方式,能够与其他Spring Framework模块...
4. **强化注解使用**:SpringMVC 大力支持注解,如`@Controller`、`@Service`、`@Autowired`或`@Resource`,使得在Controller、Service、Dao层可以方便地使用注解,增强了代码的灵活性和可读性。 **SpringMVC执行...
1. **注解驱动编程**:SpringMvc中的注解如`@RestController`、`@RequestMapping`、`@GetMapping`、`@PostMapping`等,使得开发者能以声明式的方式定义路由和HTTP方法映射,大大简化了代码。 2. **模型和视图**:`@...
在Spring框架中,注解注入是一种非常常用且强大的依赖注入(Dependency Injection,简称DI)方式。依赖注入是Spring的核心特性之一,它允许开发者在不直接创建对象的情况下,将依赖关系从对象代码中分离出来,提高了...
例如,使用 `@Controller` 注解定义控制器,`@Service` 创建业务对象,以及 `@Autowired` 或 `@Resource` 注解进行依赖注入。 【SpringMVC 执行流程】 1. 用户发送 HTTP 请求,被前端控制器 DispatcherServlet ...