spring IOC——配置文件的配置,通过注解实现IOC

一、无参,有参,无参+setter方法 三种方式配置bean

<?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:唯一标识符,同一个配置文件中不能有id相同的bean
       		class:对象的类型
        -->
        <!-- 无参构造 
        	1、spring在创建对象时通过class属性得到当前类的字节码对象
        	2、通过字节码对象调用newInstance调用无参构造方法创建对象
        	3、再用id作为key,对象作为value将该对象存放到IOC容器中(map)
        	
        	在默认情况下配置的bean在加载配置文件时就会创建对象,这种方式叫:singleton 单例
        	如果不想在加载时就创建对象,可以通过scope属性指定为其他的值修改对象创建的时间
        	protorype:在需要时才创建,而且会创建多个,只要获取一次就会创建一个
        	singleton:默认的,在加载文件时就创建
        	request:每请求一次创建一个
        	session:一次回话创建一个
        -->
       <bean id="abc" class="com.woniuxy.entity.User" scope="prototype"></bean>
       <!-- 有参构造 -->
       <bean id="aaa" class="com.woniuxy.entity.User">
       		<!-- name:属性名 -->
       		<constructor-arg name="uid" value="1001"></constructor-arg>
       		<constructor-arg name="account" value="zhangsan"></constructor-arg>
       		<constructor-arg name="pwd" value="123456"></constructor-arg>
       </bean>
       <!-- 无参+setter -->
       <bean id="bbb" class="com.woniuxy.entity.User">
       		<!-- 调用setter方法给属性赋值 -->
       		<property name="uid" value="1002"></property>
       		<property name="account" value="lisi"></property>
       		<property name="pwd" value="123456"></property>
       </bean>
       
       <!-- 自动装配 autowire  通过某种方式给属性自动赋值
       	byName : 通过属性名字自动进行赋值,找到属性名字,以属性的名字为寻找条件自动到IOC容器中
       			   寻找id与其相同的bean,然后将bean赋值给该属性
        
        -->
</beans>

二、设置自动装配(对比上面的servlet的配置)

<!-- servlet -->
       <bean id="userServlet" class="com.woniuxy.servlet.UserServlet" autowire="byName">
       	<!-- <property name="userService" ref="userService"></property> -->
       </bean>
       
       <!-- 自动装配 autowire  通过某种方式给属性自动赋值
       	byName : 通过属性名字自动进行赋值,找到属性名字,以属性的名字为寻找条件自动到IOC容器中
       			   寻找id与其相同的bean,然后将bean赋值给该属性(例如:上面的servlet)
        byType: 通过得到的属性类型,然后在IOC容器中寻找该类型的bean,给该属性赋值
        		但是要求ICO中只有一个该类型的bean
        constructor: 通过构造方法进行装配,如果是有参会根据参数的类型,去IOC容器中寻找对应类型
        		的bean,然后作为构造方法的参数进行赋值
        autodetect:首先使用constructor进行装配,如果不行切换成byType进行装配
        -->
       <!-- 设置默认装配方式:
                         在beans中添加default-autowire="..."
       -->

配置完成后在java代码中获取注入

ApplicationContext context =
				new ClassPathXmlApplicationContext("spring-context-dao.xml");
		//通过类型获取对象
		UserServlet userServlet = context.getBean(UserServlet.class);
		//也可以通过id获取对象
		User user = context.getBean("abc");

三、使用注解实现IOC
配置文件(开启注解扫码)

<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/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.woniuxy"></context:component-scan>
</beans>

注解的使用
1、@Component,@Service,@Controller,@Repository:这四个注解代表,被注解的类将会被纳入IOC容器的管理中
四个注解的作用相同:
@Reponsitory:用于dao层的类
@Service:用于服务层的类
@Controller:用于表示层的类
@Component:用于中立的类
2、@Autowired :它可以对类成员变量、方法及构造函数进行标注,让 spring 完成 bean 自动装配的工作。
首先通过属性名查找,如果找不到通过类型查找,而且即使属性没有setter方法也能赋值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值