[4]Spring以注解的方式进行Bean的实例化和属性注入
来源:互联网 发布:linux 查看所有rpm 编辑:程序博客网 时间:2024/05/22 12:37
在进行Spring开发时所需要的基础jar包有:
当需要在Spring中使用注解的时候,还需要导入
在配置文件中引入新的约束:
<?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:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- bean definitions here --> </beans>
在配置文件中进行配置:
在需要使用注解进行的时候,需要在配置文件中进行 开启注解扫描的配置
<!--开启注解的扫描 扫描com.merpyzf下所有的包--> <context:component-scan base-package="com.merpyzf" ></context:component-scan> <!--只会扫描属性上的注解--> <context:annotation-config></context:annotation-config>
使用注解的方式来创建对象:
Computer.java(需要被创建的类)
/** * Created by wangke on 17-6-23. */@Component(value = "computer") //相当于在配置文件中 <bean id="computer" class="……"></bean>@Scope(value = "prototype") //配置创建对象是否是以单列模式进行创建public class Computer { public void printBrand(){ System.out.println("小米笔记本"); }}
在需要实例化的类的类名上面加上@Component 注解来进行标识,value的值就相当于在配置文件中进行配置时bean标签的id属性的值,用于对象的创建。
创建对象的四个注解:
@Component@Controller //web层中使用@Service //业务层@Repository //持久层
这四个注解目前的功能都是一样的,注解名的不同为了能够让标记类本身的用途更加清晰,Spring在后续的版本中会对其加强。
创建对象的测试代码:
@Testpublic void Test(){ ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext02.xml"); Computer computer = (Computer) context.getBean("computer"); computer.printBrand();}
运行结果:
使用注解注入对象属性
在开发中我们经常会遇到在一个类中持有另外一个类的引用,在前面的博客中记录了使用配置文件中注入对象属性的方式,下面我们接着来看一下使用注解进行注入的方式:
下面的例子,在UserService中持有UserDao这个对象的引用
UserDao.java
/** * Created by 春水碧于天 on 2017/6/23. */@Component(value = "userDao")public class UserDao { public void printInfo(){ System.out.println("UserDao中的实例化对象里的方法执行了"); }}
两种对象属性注入的注解:
1.使用 @Autowired 注解进行自动装配,不需要指定要注入的对象的value值,自动的根据类名去寻找对应的类来创建对象并进行对象属性的注入。
2. 使用 @Resource(name=”userDao”),需要指定需要创建的对象的名字,这里的name对应@Component注解中的value的值,使用这个注解能够根据我们所指定的对象名准确创建出我们所需要的对象。
UserService.java(示例中使用@Resource注解进行对象属性的注入)
/** * Created by 春水碧于天 on 2017/6/23. */@Service(value = "userService")public class UserService { private List list; //@Autowired //自动装配,根据类名称去找相应的类来创建对象 @Resource(name="userDao") //name属性值写使用注解创建对象时的value中的值 private UserDao userDao; public void print(){ userDao.printInfo(); }}
MyTest.java 测试代码:
@Testpublic void Test(){ ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); UserService service = (UserService) context.getBean("userService"); service.print();}
运行结果:
配置文件和注解混合使用
1.创建对象的操作使用配置文件的方式实现
2.注入属性的操作使用注解的方式实现
下面看一下混合使用的例子:
在StudentService中持有BookDao,ComputerDao对象的引用,调用StudentService实例化对象中的printDo()方法测试对象是否创建成功。
BookDao.java
/** * Created by 春水碧于天 on 2017/6/23. */public class BookDao { public void doSomething(){ System.out.println("读书"); }}
ComputerDao.java
/** * Created by 春水碧于天 on 2017/6/23. */public class ComputerDao { public void doSomething(){ System.out.println("敲代码……"); }}
StudentService.java
/** * Created by 春水碧于天 on 2017/6/23. */public class StudentService { @Resource(name = "bookDao") private BookDao bookDao; @Resource(name = "computerDao") private ComputerDao computerDao; public void printDo(){ bookDao.doSomething(); computerDao.doSomething(); }}
applicationContext.xml(Spring 配置文件)
<!--开启注解扫描--><context:component-scan base-package="com.merpyzf"></context:component-scan><!--进行对象的创建--><bean id="studentService" class="com.merpyzf.study.StudentService"></bean><bean id="bookDao" class="com.merpyzf.study.BookDao"></bean><bean id="computerDao" class="com.merpyzf.study.ComputerDao"></bean>
MyTest.java(测试代码)
@Testpublic void Test(){ ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); StudentService service = (StudentService) context.getBean("studentService"); service.printDo();}
运行结果:
- [4]Spring以注解的方式进行Bean的实例化和属性注入
- [3]Spring以配置文件的方式进行属性注入
- Spring的bean管理(注解注入属性和注解文件混合使用)
- Spring的bean管理(注解注入属性)
- Spring的bean管理——注解注入属性
- 2.bean的命名和实例化、依赖注入方式
- Spring的属性注入到bean实例的细节
- Spring4----使用注解方式配置bean和bean的属性
- Spring bean 注解方式注入
- Spring的bean注入方式
- spring bean注入的方式
- Spring中Bean属性为集合的注入方式
- spring给bean注入属性的三种方式
- Spring基于注解的方式配置bean的实例
- bean标签的属性和spring属性注入
- Spring通过@Value注解注入属性的几种方式
- Spring通过@Value注解注入属性的几种方式
- Spring通过@Value注解注入属性的几种方式
- 为任意网格计算切空间坐标系向量
- 关于css的reset:统一浏览器显示效果
- 抽象类与接口
- 人类难以监管AI的三个原因【智库2861】
- ubuntu启动ssh服务
- [4]Spring以注解的方式进行Bean的实例化和属性注入
- Python爬虫利器系列文章
- Mybatis的二级缓存使用
- lamda Linq group by查询
- 编译老版本webrtc遇到的问题
- 微信授权移动应用登录SDK 之问题
- Java Servlet 规范 第7章 会话
- “duplicate interface definition for class ‘xxxx’”
- Unity基于Network的使用