使用Spring框架,我们不需要创建类的对象,都有Spring 容器创建,并通过注解来注入。注入的原理就是在程序启动的时候,Spring根据xml中配置的路径来扫描类,如果发现类的上方有类似@Service,@Controller,此时就会定位到当前类,然后来给当前类中标有注解的属性进行注入,从而我们可以使用该属性,调用方法。
那么普通类怎么使用@Service标记的方法呢?
1.如果你想用@autowired,那么这个类本身也应该是在spring的管理下 的,即你的UserLogUtil也要标注为一个component(或Service),这样spring才知道要注入依赖;
2. 如果不标注为@Component的话,此时不能通过@autowired来注入依赖,只能通过ApplicationContext来取得标注为Service的类: UserLogService service = ApplicationContext.getBean(UserLogService.class);
那么Web项目中如何获取ApplicationContext
1.
ApplicationContext ac1 = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc)
2.
ApplicationContext ac2 = WebApplicationContextUtils.getWebApplicationContext(ServletContext sc)
注:至于获取ServletContext对象,可以从request,session中获取,他们都有getServletContext()方法
3 写一个工具类实现ApplicationContextAware接口,并将这个加入到spring的容器(推荐)
package com.ylcf.before.ylcf.base.sys.utils; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; /** * @author zhengyunfei * @create 2018-02-08-下午 21:34 **/ public class SpringContextUtil implements ApplicationContextAware { private static ApplicationContext applicationContext = null; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } public static ApplicationContext getApplicationContext(){ return applicationContext; } public static Object getBean(String beanName){ return applicationContext.getBean(beanName); } public static Object getBean(Class c){ return applicationContext.getBean(c); } }
然后将此bean注册到spring 的容器中,在spring的配置文件添加如下代码
<bean id="springContextUtil" class="com.ncut.ssm.util.SpringContextUtil"></bean>
最后在普通类就可以这样调用
相关推荐
在“testannotation”这个文件中,可能包含了一些示例代码,如测试类、配置类或者带有注解的业务类。通过分析这些代码,我们可以更好地理解Spring注解的使用和自动装配的工作原理。 总的来说,Spring注解极大地简化...
在Spring Boot框架中,普通类调用bean是常见的操作,特别是在构建复杂应用时。这篇博客“17. Spring Boot普通类调用bean【从零开始学Spring Boot】”旨在指导初学者如何在非Spring管理的类中访问和使用Spring容器中...
@Component、@Service、@Repository和@Controller分别用于标记普通bean、业务层bean、数据访问层bean和控制器层bean,它们都是@Component的子注解,方便进行组件的分类。使用这些注解时,记得在Spring配置文件中启用...
* @Async:注解在方法上标示这是一个异步方法,在类上标示这个类所有的方法都是异步方法 七、计划任务 * @EnableScheduling:注解在配置类上,开启对计划任务的支持 * @Scheduled:注解在方法上,声明该方法是计划...
在本篇《Spring注解学习手札(一)构建简单Web应用》中,我们将深入探讨如何使用Spring框架的注解来构建一个基本的Web应用程序。Spring框架是Java开发中的核心工具,尤其在企业级应用中广泛应用。它简化了依赖注入、...
Spring注解是Spring框架中的一种核心特性,它极大地简化了配置和对象的管理。通过注解,开发者可以在类和方法级别声明对象的行为和依赖关系,从而避免了XML配置的繁琐。下面将详细介绍Spring注解的使用及其相关知识...
1. **@Component**:这是最基础的注解,用于标记一个普通的Java类为Spring Bean。如果你的类没有特定的角色,可以使用此注解。 2. **@Service**:通常用于标记业务逻辑层的类。它继承自@Component,添加了一些默认...
这些注解可以用于标记任何普通的Java类,声明它们为Spring Bean。`@Component`用于通用组件,`@Service`用于业务层,`@Repository`用于数据访问层。 2. **`@Autowired`注入**:当Bean被自动扫描后,Spring可以使用`...
`@Component`是Spring中最基础的注解,它可以将一个普通的Java类声明为Spring的Bean。当你在类上使用`@Component`时,Spring会自动发现这个类并将其注册到IoC容器中。例如: ```java @Component public class ...
1. `@Component`:这是Spring中的基础注解,用于标记一个类为Bean,通常用于普通POJO对象。Spring会自动扫描并管理这类Bean。 2. `@Service` 和 `@Repository`:这两个注解是 `@Component` 的特化版,主要用于业务...
在Spring框架中,属性装配是将配置文件中的属性值注入到Bean对象中,使得对象能够根据配置信息正确地运行。Spring提供了多种方式进行属性装配,包括XML配置、基于注解的配置以及自动装配。本篇文章主要关注的是使用...
`@Component`是最基础的注解,可以用来标记任何普通的Java类。`@Service`、`@Repository`和`@Controller`则分别用于标记服务层、数据访问层和表现层的类,它们是在`@Component`基础上的特化。通过`@ComponentScan`...
1. `@Component`:这是Spring中的基础组件注解,用于标记一个普通的Java类作为Spring管理的Bean。例如,可以将`Zoo`类标记为`@Component`,然后Spring会自动发现并管理它。 ```java @Component public class Zoo { ...
例如,`@Component`用于标记一个普通的Java类作为Spring管理的bean,而`@Controller`则用于标记Web层的控制器类。 2. **自动扫描**: Spring 2.5引入了自动扫描功能,通过`@ComponentScan`注解,Spring容器可以...
`@Bean`注解的方法会返回一个对象,该对象会被Spring容器管理。 4. **条件注解(Conditional Annotation)**:如`@Conditional`,可以根据某些条件决定是否创建bean。这对于实现环境感知或多环境配置非常有用。 5....
- **@Component**:用于标记一个普通的Java类为Spring管理的Bean。 - **@Service**:通常用于标记业务层的组件。 - **@Repository**:用于标记数据访问层(DAO层)的组件。 - **@Controller**:用于标记Web层的组件...
这些注解分别用于标记普通的bean、服务层bean、数据访问层bean和控制器层bean。 3. **AOP(面向切面编程)**:`@Aspect`定义了一个切面,`@Before`、`@After`、`@Around`、`@AfterReturning`和`@AfterThrowing`注解...
- `@Component`:这是一个基础注解,用于标记一个普通的Java类作为Spring的bean。`@Service`、`@Repository`和`@Controller`是它的特殊形式,分别对应服务层、数据访问层和视图层。 - `@Autowired`:这个注解用于...
本资料集合了多种类型的注解,包括普通Java注解、Hibernate注解、Spring注解以及Struts2注解,对学习注解的开发者来说是一份宝贵的资源。 1. 普通Java注解: Java标准库提供了若干内置注解,如`@Override`用于指示...