Spring中提供一些作用在类上:
@Component //每个层都可以,作用在类上 @Controller //作用在web层 @Service //作用在业务层 @Repository //作用在持久层 这三个注解都放在每层的类上面,会创建对应的对象,Component可以每层类上但建议使用其他三个注解增强
属性注解:
@Value //用于注入基本类型 @Autowired //用于对象注入,默认按类型进行自动装配 @Qualifier //用于对象注入,按名称注入 @Resource //相当于@Autowired与Qualifier一起使用,JDK提供的注解,Spring支持
作用范围
//Bean的作用范围注解,作用在类上,singleton:单例(默认) prototype:多例 @Scope(value="prototype") //Bean的生命周期注解,作用在方法上 @PostConstruct //相当于init-method @PreDestroy //相当于destroy-method
实现注解方式
UserService:
package com.spring.demo04; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; /** * 组件注解,标记该类 * 相当于:<bean id="userService" class="com.spring.demo04.UserService"> */ @Component(value="userService") public class UserService { //属性注解:基本数据类型 @Value(value="业务层") private String name; //@Resource(name="userDao") JDK提供的注解,spring支持 //对象注解:按类型自动装配 @Autowired @Qualifier(value="userDao") //也可以不写,一旦写名称必须一致 private UserDao userDao; public void save() { System.out.println(name+"启动。。。"); userDao.save(); } }
UserDao:
package com.spring.demo04; import org.springframework.stereotype.Repository; /** * UserDao交给IOC容器 * 相当于:<bean id="userDao" class="com.spring.demo04.UserDao"> */ @Repository(value="userDao") public class UserDao { public void save() { System.out.println("持久层启动。。。。"); } }
配置文件设置扫描该类属于的包:
<?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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 开启注解的扫描:扫描该包下的所有类 --> <context:component-scan base-package="com.spring.demo04" /> </beans>
测试:
package com.spring.demo04; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class TestDI { @Test public void run() { //创建容器对象,加载配置文件 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); //获取userService对象 UserService userService = (UserService) context.getBean("userService"); //调用save方法 userService.save(); } }
运行结果:
原文地址:https://www.cnblogs.com/jumpkin1122/p/11623808.html
时间: 2024-10-17 02:40:50