(一)

知识点:Spring容器支持多种形式的Bean的装配方式,比如基于XML的装配,基于注解的装配和自动装配(最常用的就是基于注解的装配)

Spring提供了两种基于xml的装配方式:设值注入(Setter Injection)和构造器注入(Construtor Injection)

1.InstanceTest.java

package com.inspur.assembling;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.inspur.static_factory.Bean2; public class InstanceTest { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String xmlPath = "com/inspur/assembling/bean1.xml";
//2.ApplicationContext 在加载文件时,对bean实例化
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath); System.out.println(applicationContext.getBean("user1"));
System.out.println(applicationContext.getBean("user2")); } }

2.User.java

package com.inspur.assembling;

import java.util.List;

public class User {

    //1.设值注入
//无参构造器
public User(){
}
private String username;
private Integer password;
private List<String> list;
//设置setter方法
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;
} //2.构造器注入
//有参数构造器
public User(String username, Integer password, List<String> list) {
super();
this.username = username;
this.password = password;
this.list = list;
}
public String toString(){
return "[User:username="+username+",password:"+password+",list:"+list+"]";
} }

3.bean1.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/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 设值注入 -->
<bean id="user1" class="com.inspur.assembling.User">
<property name="username" value="zhangsan"></property>
<property name="password" value="123"></property>
<property name="list">
<list>
<value>设值注入1</value>
<value>设值注入2</value>
<value>设值注入3</value>
</list>
</property>
</bean> <!-- 构造器注入 -->
<bean id="user2" class="com.inspur.assembling.User">
<constructor-arg index="0" value="lisi"></constructor-arg>
<constructor-arg index="1" value="456"></constructor-arg>
<constructor-arg index="2">
<list>
<value>构造器注入1</value>
<value>构造器注入2</value>
</list>
</constructor-arg>
</bean>
</beans>

(二)注解

1.InstanceTest.java

package com.inspur.zhujie1;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class InstanceTest { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String xmlPath = "com/inspur/zhujie1/bean.xml";
//2.ApplicationContext 在加载文件时,对bean实例化
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
UserController userController = (UserController)applicationContext.getBean("UserController");
userController.save(); } }

2.UserController.java

package com.inspur.zhujie1;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;

@Controller("UserController")
public class UserController {
@Resource(name="userService")
private UserService userService;
public void save(){
this.userService.save();
System.out.println("UserController..save");
} }

3.UserDao.java

package com.inspur.zhujie1;

public interface UserDao {
public void save(); }

3.UserDaoImpl.java

package com.inspur.zhujie1;

import org.springframework.stereotype.Repository;

@Repository("userDao")
public class UserDaoImpl implements UserDao{
public void save(){
System.out.println("UserDaoImpl.. save");
} }

4.UserService.java

package com.inspur.zhujie1;

public interface UserService {
public void save(); }

5.UserServiceImpl.java

package com.inspur.zhujie1;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

@Service("userService")
public class UserServiceImpl implements UserService{
@Resource(name="userDao")
private UserDao userdao;
public void save(){
userdao.save();
System.out.println("UserService...save..");
} }

6.bean.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" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<!-- 使用Context命名空间,在配置文件中开启相应的注解处理器 -->
<context:annotation-config />
<!-- 使用Spring配合文件中的注解方式较大程度简化了Xml文件中的bean的配置,但仍然需要在spring文件中配置相应的bean -->
<!-- userDao -->
<!-- <bean id="userDao" class="com.inspur.annotation.UserDaoImpl"></bean>
<bean id="userService" class="com.inspur.annotation.UserServiceImpl"></bean>
<bean id="userController" class="com.inspur.annotation.UserController"></bean> -->
<!-- context空间下扫描组件 将指定包下的所有的Bean类,进行注解解析 -->
<context:component-scan base-package="com.inspur.zhujie1" />
</beans>

7.运行结果:

(四)自动注解

1.InstanceTest.java

package com.inspur.autozhujie;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class InstanceTest { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String xmlPath = "com/inspur/autozhujie/bean.xml";
//2.ApplicationContext 在加载文件时,对bean实例化
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
UserController userController = (UserController)applicationContext.getBean("userController");
userController.save(); } }

2.UserController.java

package com.inspur.autozhujie;

public class UserController {

    private UserService userService;
//为属性设置setter方法
public void setUserService(UserService userService){
this.userService=userService;
}
public void save(){
this.userService.save();
System.out.println("UserController..save");
} }

3.UserDao.java

package com.inspur.autozhujie;

public interface UserDao {
public void save();
}

4.UserDaoImpl.java

package com.inspur.autozhujie;

public class UserDaoImpl implements UserDao {

    public void save(){
System.out.println("UserDaoImpl.. save");
} }

5.UserService.java

package com.inspur.autozhujie;

public interface UserService {
public void save();
}

6.UserServiceImpl.java

package com.inspur.autozhujie;

public class UserServiceImpl implements UserService {
private UserDao userDao;
//为属性提供setter方法
public void setUserDao(UserDao userDao){
this.userDao=userDao;
}
public void save(){
userDao.save();
System.out.println("UserService...save..");
}
}

7.bean.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" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<!-- 使用bean元素的autowise属性完成自动装配 -->
<bean id="userDao" class="com.inspur.autozhujie.UserDaoImpl"></bean>
<bean id="userController" class="com.inspur.autozhujie.UserController" autowire="byName"></bean>
<bean id="userService" class="com.inspur.autozhujie.UserServiceImpl" autowire="byName" ></bean>
</beans>

Bean的装配方式的更多相关文章

  1. bean的装配方式(注入方式,构造注入,setter属性注入)

    bean的装配方式有两种,构造注入和setter属性注入. public class User { private String username; private String password; ...

  2. Spring 中Bean的装配方式

    最近又买了一本介绍SSM框架的书,是由黑马程序员编写的,书上讲的很好理解,边看边总结一下.主要总结一下bean的装配方式. Bean的装配可以理解为依赖系统注入,Bean的装配方式即Bean依赖注入的 ...

  3. Spring Bean 的装配方式

    Spring Bean 的装配方式 装配 Bean 的三种方式 一个程序中,许多功能模块都是由多个为了实现相同业务而相互协作的组件构成的.而代码之间的相互联系又势必会带来耦合.耦合是个具有两面性的概念 ...

  4. 【Spring】Spring中的Bean - 5、Bean的装配方式(XML、注解(Annotation)、自动装配)

    Bean的装配方式 简单记录-Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)-Spring中的Bean 文章目录 Bean的装配方式 基于XML的装配 基于注解 ...

  5. Spring中Bean的装配方式

    一.基于xml的装配 Student.java package com.yh; public class Student implements People { public void breath( ...

  6. Spring框架(2)---IOC装配Bean(xml配置方式)

    IOC装配Bean (1)Spring框架Bean实例化的方式提供了三种方式实例化Bean 构造方法实例化(默认无参数,用的最多) 静态工厂实例化 实例工厂实例化 下面先写这三种方法的applicat ...

  7. 03_Spring Bean的装配模式_基于Annotation配置方式

    前言 在Spring中尽管使用XML配置文件可以实现Bean的装配工作,但如果应用中Bean的数量较多,会导致XML配置文件过于臃肿,从而给维护和升级带来一定的困难.从JDK 5开始提供了名为Anno ...

  8. IOC装配Bean(XML方式)

    Spring框架Bean实例化的方式 提供了三种方式实例化Bean 构造方法实例化(默认无参数,用的最多) 静态工厂实例化 实例工厂实例化 无参数构造方法的实例化 <!-- 默认情况下使用的就是 ...

  9. Spring Bean装配方式

    Spring装配机制 在xml中进行显示配置 在Java中进行显示配置 隐式bean发现机制和自动装配 自动化装配bean 组件扫描(component scanning),Spring会自动发现应用 ...

随机推荐

  1. mysql————表类型(存储引擎)的选择

    表类型(存储引擎)的选择 7.1 mysql存储引擎概述 插件式存储引擎是mysql数据库最重要的特性之一,用户可以根据应用的需要选择ruhr存储和索引数据,是否使用事务等. InnoDB和BDB提供 ...

  2. Bash 实例,第二部分

    我们先看一下处理命令行自变量的简单技巧,然后再看看 bash 基本编程结构. 接收自变量 在 介绍性文章 中的样本程序中,我们使用环境变量 "$1" 来引用第一个命令行自变量.类似 ...

  3. windows远程桌面访问ubuntu12.04

    转载自 : http://blog.csdn.net/shuzui1985/article/details/7592569 1.dashboard----桌面共享 我们共享所使用的协议是rdp,所以我 ...

  4. Spring学习--实现 FactoryBean 接口在 Spring IOC 容器中配置 Bean

    Spring 中有两种类型的 bean , 一种是普通的 bean , 另一种是工厂 bean , 即 FactroyBean. 工厂 bean 跟普通 bean 不同 , 其返回的对象不是指定类的一 ...

  5. LOJ 6057 - [HNOI2016]序列 加强版再加强版

    Description 给定一个长度为 \(n\le 3*10^6\) 的序列 \(q\le 10^7\) 次询问每次求区间 \([l,r]\) 的所有子区间的最小值的和 询问随机 Solution ...

  6. [洛谷P1541] 乌龟棋

    洛谷题目链接:乌龟棋 题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩 ...

  7. 【EOJ3654】管理孩子(贪心,二分)

    题意:有一棵n个点的树,其中有k个是关键点,将树分割成若干部分,每部分至少包含一个关键点,求最大分割大小的最小值 思路: 最后特判一下f[1]的值 #include<cstdio> #in ...

  8. Codeforces Round #300 解题报告

    呜呜周日的时候手感一直很好 代码一般都是一遍过编译一遍过样例 做CF的时候前三题也都是一遍过Pretest没想着去检查... 期间姐姐提醒说有Announcement也自信不去看 呜呜然后就FST了 ...

  9. Nginx的主要配置参数说明

    #定义Nginx运行的用户和用户组user www www; #nginx进程数,建议设置为等于CPU总核心数.worker_processes 8; #全局错误日志定义类型,[ debug | in ...

  10. usaco 月赛 2005 january sumset

    2013-09-18 08:23 打表找规律 w[i]:=w[i-1];  奇 w[i]:=w[i-1]+w[i div 2];     偶 //By BLADEVIL var w :..] of l ...