装配bean的三种方式
第一种:XML装配
xml装配有两种方式:
第一种:利用有参构造方法注入
User类:
package com.liu.xml;import java.util.List;
//xml装配bean的两种方式
public class User {private String username;private Integer password;private List<String> list;//第一种:利用有差构造方法装配beanpublic User(String username, Integer password, List<String> list) {super();this.username = username;this.password = password;this.list = list;}@Overridepublic String toString() {return "User [username=" + username + ", password=" + password + ", list=" + list + "]";}}
ApplicationContext.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/beanshttp://www.springframework.org/schema/beans/spring-beans-4.3.xsd"><!-- 有参构造方法注入装配user --><bean id = "user2" class = "com.liu.xml.User"><constructor-arg index = "0" value = "lisi"></constructor-arg><constructor-arg index = "1" value = "123456"></constructor-arg><constructor-arg><!-- 注入list --><list><value>listvalue1</value><value>listvalue1</value><value>listvalue1</value></list></constructor-arg></bean></beans>
测试类:
package com.liu.xml;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class XmlBeanTest {public static void main(String[] args) {//获取配置文件路径String xmlpath ="com/liu/xml/ApplicationContext.xml";//加载配置文件ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlpath);//输出有参构造方法注入的结果User user2 = (User) applicationContext.getBean("user2");System.out.println(user2);}}
第二种:利用无参构造方法和setter方法注入
User类:
package com.liu.xml;import java.util.List;
//xml装配bean的两种方式
public class User {private String username;private Integer password;private List<String> list;//第二种:无参构造方法和setter方法注入public User() {super();}public void setUsername(String username) {this.username = username;}public void setPassword(Integer password) {this.password = password;}public void setList(List<String> list) {this.list = list;}@Overridepublic String toString() {return "User [username=" + username + ", password=" + password + ", list=" + list + "]";}}
ApplicationContext.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/beanshttp://www.springframework.org/schema/beans/spring-beans-4.3.xsd"><!-- 无参构造方法和setter装配user --><bean id = "user1" class = "com.liu.xml.User"><property name="username" value = "zhangsan"></property><property name="password" value = "123456"></property><property name="list" ><!-- 注入list --><list><value>listvalue1</value><value>listvalue2</value><value>listvalue3</value></list></property></bean></beans>
测试类:
package com.liu.xml;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class XmlBeanTest {public static void main(String[] args) {//获取配置文件路径String xmlpath ="com/liu/xml/ApplicationContext.xml";//加载配置文件ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlpath);//输出无参构造方法注入的结果User user1 = (User) applicationContext.getBean("user1");System.out.println(user1);}}
两种方式的输出结果:
User [username=zhangsan, password=123456, list=[listvalue1, listvalue2, listvalue3]]
User [username=lisi, password=123456, list=[listvalue1, listvalue1, listvalue1]]
第二种:注解装配
UserDao.java
package annotation;public interface UserDao {public void save();}
UserDaoImpl.java
package annotation;import org.springframework.stereotype.Repository;@Repository("userDao")
public class UserDaoImpl implements UserDao {@Overridepublic void save() {// TODO Auto-generated method stubSystem.out.println("UserDao------save");}}
UserService.java
package annotation;public interface UserService {public void save();}
UserServiceImpl.java
package annotation;import javax.annotation.Resource;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service("userService")
public class UserServiceImpl implements UserService {//@Resource(name = "userDao") 两种注解都可以 Resource是根据名称注解 Autowired是自动注解@Autowiredprivate UserDao userDao;@Overridepublic void save() {// TODO Auto-generated method stubthis.userDao.save();System.out.println("UserSerevice-------save");}}
UserController.java:
package annotation;import javax.annotation.Resource;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;@Controller("controller")
public class UserController {//@Resource(name = "userService")两种注解都可以 Resource是根据名称注解 Autowired是自动注解@Autowiredprivate UserService userService;public void save() {this.userService.save();System.out.println("UserController------save");}}
ApplicationContext.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.3.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.3.xsd"><!--第一种方式 --><!-- 使用context命名空间,在配置文件中开启对应的注解解析器 --><!-- 使用context命名空间的步骤1:添加xmlns:context="http://www.springframework.org/schema/context"2:添加 http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.3.xsd--><context:annotation-config></context:annotation-config><!-- 定义三个bean实例 --><bean id = "userDao" class = "annotation.UserDaoImpl"></bean> <bean id = "userService" class = "annotation.UserServiceImpl"></bean> <bean id = "userController" class = "annotation.UserController"> </bean><!-- 第二种方式 使用context命名空间。通知string扫描包自动对注解解析--><!-- <context:component-scan base-package="annotation"></context:component-scan> -->
</beans>
ControllerTest.java测试类:
package annotation;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class ControllerTest {//使用注解进行装配public static void main(String[] args) {String xmlpath = "annotation/ApplicationContext.xml";ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlpath);//获取UserController的实例UserController userController = (UserController) applicationContext.getBean("userController");//输出UserController中的save方法userController.save();}}
输出结果:
UserDao------save
UserSerevice-------save
UserController------save
第三种:自动装配
UserDao.java:
package zidongzhuangpei;public interface UserDao {public void save();}
UserDaoImpl.java:
package zidongzhuangpei;import org.springframework.stereotype.Repository;@Repository("userDao")
public class UserDaoImpl implements UserDao {@Overridepublic void save() {// TODO Auto-generated method stubSystem.out.println("UserDao------save");}}
UserService.java:
package zidongzhuangpei;public interface UserService {public void save();}
UserServiceImpl.java:
package zidongzhuangpei;import javax.annotation.Resource;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service("userService")
public class UserServiceImpl implements UserService {//@Resource(name = "userDao")@Autowiredprivate UserDao userDao;public void setUserDao(UserDao userDao) {this.userDao = userDao;}@Overridepublic void save() {// TODO Auto-generated method stubthis.userDao.save();System.out.println("UserSerevice-------save");}}
UserController.java:
package zidongzhuangpei;import javax.annotation.Resource;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;@Controller("controller")
public class UserController {//@Resource(name = "userService")@Autowiredprivate UserService userService;public void setUserService(UserService userService) {this.userService = userService;}public void save() {this.userService.save();System.out.println("UserController------save");}}
ApplicationContext.xml配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.3.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.3.xsd"><!-- 使用context命名空间,在配置文件中开启对应的注解解析器 --><!-- 使用context命名空间的步骤1:添加xmlns:context="http://www.springframework.org/schema/context"2:添加 http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.3.xsd--><context:annotation-config></context:annotation-config><!-- 定义三个bean实例 --><bean id = "userDao" class = "zidongzhuangpei.UserDaoImpl"></bean> <bean id = "userService" class = "zidongzhuangpei.UserServiceImpl" autowire="byName"></bean> <bean id = "userController" class = "zidongzhuangpei.UserController" autowire="byName"> </bean></beans>
ControllerTest.java测试类:
package zidongzhuangpei;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class ControllerTest {//使用注解进行装配public static void main(String[] args) {String xmlpath = "zidongzhuangpei/ApplicationContext.xml";ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlpath);//获取UserController的实例UserController userController = (UserController) applicationContext.getBean("userController");//输出UserController中的save方法userController.save();}}
运行结果:
UserDao------save
UserSerevice-------save
UserController------save
装配bean的三种方式相关推荐
- 记下来 Spring 装配 Bean 的三种方式
ps:拿笔记一下,面试可能会考.依赖注入DI和面向切面编程AOP是Spring框架最核心的部分.这次主要是总结依赖注入的bean的装配方式. 前言 什么是依赖注入呢?也可以称为控制反转,简单的来说,一 ...
- Spring实战(三)Spring中装配Bean的三种方式---XML、JavaConfig、AutoWire
创建应用对象之间协作关系的行为称为装配(wiring),这也是依赖注入的本质. Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系,而开发者需要告诉Spring需要创建哪些 ...
- 【Spring杂烩】探讨Spring向容器注册Bean的三种方式
探讨Spring向容器注册Bean的三种方式 重点了解@Import实现的三种子方式 前提概要 Spring向容器注册Bean的三种方式 通过@ComponentScan.@Componet 通过@B ...
- SpringBoot静态获取 bean的三种方式,你学会了吗?
欢迎关注方志朋的博客,回复"666"获面试宝典 来源:blog.csdn.net/showchi/article/details/97005720 注意:调用者要被spring管理 ...
- java bean 工厂模式_Spring框架通过工厂创建Bean的三种方式实现
工厂模式 Spring中bean的创建,默认是框架利用反射new出来的bean实例.有时候也会有一些复杂的情况. 假设有一个飞机,属性如下,现在需要造很多同型号的飞机,那么唯一需要改变的属性只有Dri ...
- 把对象的创建交给spring来管理—— 1.创建bean的三种方式 2.bean对象的作用范围 3.bean对象的生命周期
把对象的创建交给spring来管理 spring对bean的管理细节 1.创建bean的三种方式 2.bean对象的作用范围 3.bean对象的生命周期 创建Bean的三种方式 ...
- 五、创建Bean的三种方式
五.创建Bean的三种方式 转载于:https://www.cnblogs.com/ljiwej/p/7280614.html
- Spring 创建Bean的三种方式
创建Bean的三种方式 第一种方式:使用默认构造函数创建. 在spring的配置文件中使用bean标签,配以id和class属性之后,且没有其他属性和标签时.采用的就是默认构造函数创建bean对象,此 ...
- Spring 使用@Import注入Bean的三种方式
一.准备工作 1.导入spring-context依赖 <dependency><groupId>org.springframework</groupId>< ...
最新文章
- 实现点击下载文件的几种方法
- vs2017通过snippet代码片断进行标准化注释
- mysql数据库自动转储_mysql数据库数据定时封装转储
- 11种你需要了解的物联网(IoT)协议
- 精算模型10 非参数模型0 精算数据、非参数建模的思路概述
- 【渝粤题库】陕西师范大学200431综合英语(一)作业(高起专、高起本)
- 应用配置管理ACM 使用场景快速入门
- vue 头部组件监控页面来源
- POJ 2240	Arbitrage Bellman_ford 判读是否存在正环
- $.ajax跳入error之 async
- 基于linux嵌入式的开发,基于Linux的嵌入式GUI的研究与开发
- c语言无纸化测评答案,无纸化计算机二级C语言程序设计题库答案程序题
- 基于javaweb的银行柜员绩效考核系统
- 解决Vsphere Client 60天过期问题
- 最新全国行政区域编码(2018年12月)
- 仿苹果手机_安卓党福音?安卓手机也能拥有iOS控制中心,十分炫酷
- 期货大佬给交易者的交易箴言,值得珍藏品读!
- ESP32用自签CA进行MQTT的TLS双向认证通信
- CAD的高程注记转成Arcgis点要素(且带高程属性)
- vue-生成二维码+下载二维码
热门文章
- OpenSAP网址收藏
- SAP 财务模块 FI-TV 差旅管理
- 双十一最新预测:这个连续多年夺第一的省份2020会被超越吗?
- 资本加码下注农牧供应链,健安供应链因何成为“香饽饽”?
- 3d max用不同目标做关键帧_基于光流的视频目标检测系列文章解读
- 未來用工新趨勢_数字化商业浪潮来袭 未来用工新趋势成焦点
- mysql 回收空间_MySQL表的碎片整理和空间回收小结
- 四大基本反应类型的关系_初中化学7大反应类型总结,收藏
- Python里的dict和set的背后小秘密
- python中实现延时回调普通函数示例代码