第一种: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的三种方式相关推荐

  1. 记下来 Spring 装配 Bean 的三种方式

    ps:拿笔记一下,面试可能会考.依赖注入DI和面向切面编程AOP是Spring框架最核心的部分.这次主要是总结依赖注入的bean的装配方式. 前言 什么是依赖注入呢?也可以称为控制反转,简单的来说,一 ...

  2. Spring实战(三)Spring中装配Bean的三种方式---XML、JavaConfig、AutoWire

    创建应用对象之间协作关系的行为称为装配(wiring),这也是依赖注入的本质. Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系,而开发者需要告诉Spring需要创建哪些 ...

  3. 【Spring杂烩】探讨Spring向容器注册Bean的三种方式

    探讨Spring向容器注册Bean的三种方式 重点了解@Import实现的三种子方式 前提概要 Spring向容器注册Bean的三种方式 通过@ComponentScan.@Componet 通过@B ...

  4. SpringBoot静态获取 bean的三种方式,你学会了吗?

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:blog.csdn.net/showchi/article/details/97005720 注意:调用者要被spring管理 ...

  5. java bean 工厂模式_Spring框架通过工厂创建Bean的三种方式实现

    工厂模式 Spring中bean的创建,默认是框架利用反射new出来的bean实例.有时候也会有一些复杂的情况. 假设有一个飞机,属性如下,现在需要造很多同型号的飞机,那么唯一需要改变的属性只有Dri ...

  6. 把对象的创建交给spring来管理——  1.创建bean的三种方式     2.bean对象的作用范围     3.bean对象的生命周期

    把对象的创建交给spring来管理 spring对bean的管理细节     1.创建bean的三种方式     2.bean对象的作用范围     3.bean对象的生命周期 创建Bean的三种方式 ...

  7. 五、创建Bean的三种方式

    五.创建Bean的三种方式 转载于:https://www.cnblogs.com/ljiwej/p/7280614.html

  8. Spring 创建Bean的三种方式

    创建Bean的三种方式 第一种方式:使用默认构造函数创建. 在spring的配置文件中使用bean标签,配以id和class属性之后,且没有其他属性和标签时.采用的就是默认构造函数创建bean对象,此 ...

  9. Spring 使用@Import注入Bean的三种方式

    一.准备工作 1.导入spring-context依赖 <dependency><groupId>org.springframework</groupId>< ...

最新文章

  1. 实现点击下载文件的几种方法
  2. vs2017通过snippet代码片断进行标准化注释
  3. mysql数据库自动转储_mysql数据库数据定时封装转储
  4. 11种你需要了解的物联网(IoT)协议
  5. 精算模型10 非参数模型0 精算数据、非参数建模的思路概述
  6. 【渝粤题库】陕西师范大学200431综合英语(一)作业(高起专、高起本)
  7. 应用配置管理ACM 使用场景快速入门
  8. vue 头部组件监控页面来源
  9. POJ 2240 Arbitrage Bellman_ford 判读是否存在正环
  10. $.ajax跳入error之 async
  11. 基于linux嵌入式的开发,基于Linux的嵌入式GUI的研究与开发
  12. c语言无纸化测评答案,无纸化计算机二级C语言程序设计题库答案程序题
  13. 基于javaweb的银行柜员绩效考核系统
  14. 解决Vsphere Client 60天过期问题
  15. 最新全国行政区域编码(2018年12月)
  16. 仿苹果手机_安卓党福音?安卓手机也能拥有iOS控制中心,十分炫酷
  17. 期货大佬给交易者的交易箴言,值得珍藏品读!
  18. ESP32用自签CA进行MQTT的TLS双向认证通信
  19. CAD的高程注记转成Arcgis点要素(且带高程属性)
  20. vue-生成二维码+下载二维码

热门文章

  1. OpenSAP网址收藏
  2. SAP 财务模块 FI-TV 差旅管理
  3. 双十一最新预测:这个连续多年夺第一的省份2020会被超越吗?
  4. 资本加码下注农牧供应链,健安供应链因何成为“香饽饽”?
  5. 3d max用不同目标做关键帧_基于光流的视频目标检测系列文章解读
  6. 未來用工新趨勢_数字化商业浪潮来袭 未来用工新趋势成焦点
  7. mysql 回收空间_MySQL表的碎片整理和空间回收小结
  8. 四大基本反应类型的关系_初中化学7大反应类型总结,收藏
  9. Python里的dict和set的背后小秘密
  10. python中实现延时回调普通函数示例代码