IOC容器的相关操作

IOC/DI

内部bean

<bean id="emp">
    <property name="ename" value"lucy"></property>
    <property name="depe">
    	<bean id="dept" class="">
        	<property name="dname" vlaue"jfeoi"></property>
        </bean>
    </property>
</bean>

级联赋值

<bean id="emp">
    <property name="ename" value"lucy"></property>
    <property name="depe" ref="dept"></property>
</bean>

<bean id="dept" class="">
       <property name="dname" vlaue"jfeoi"></property>
</bean>
<bean id="emp">
    <property name="ename" value"lucy"></property>
    <property name="depe" ref="dept"></property>
    dept   get方法要出来
    <property name="dept.dname" value="技术部"></property> 
</bean>

注入数组

<bean id="stu" class="">
    <porperty name="course">
    	<array>
        	<value>aa</value>
            <value>bb</value>
   		</array>
    </porperty>
    
    <property name="list">
    	<list>
        	<value>张三</value>
            <value>小三</value>
        </list>
    </property>
    
    <property name="maps">
    	<map>
        	<entry key="java" value="java"></entry>
        </map>
    </property>
    
    <property name="sets">
    	<set>
        	<value>jdsiof</value>
        </set>
    </property>
</bean>
public void test(){
    ApplicationContext context = ClassPathXmlApplicationContext();
    ....
        System.....
}

在集合中设置对象类型值

<bean id="stu" class="">
    <porperty name="courseList">
    	<list>
        	<ref bean="course1"></ref>
            <ref bean="course2"></ref>
        </list>
    </porperty>
</bean>

<bean id="course1" class="">
	......
</bean>

<bean id="course2" class="">
	......
</bean>

有两种类型bean 一种是普通bean, 另一种工厂bean

普通bean,定义的类型就是返回类型

工厂bean,定义的类型可以和返回类型不一样

public class MyBean implements FactoryBean<Course>
{
 	@Override
}
<bean id="factorybean" class="Course">
	
</bean>

默认单实例对象

可以设置成多实例

scope属性配置

默认值, singleton单实例对象,加载配置文件 的时候

prototype多实例对象,获取对象的时候创建 创建时机不同

还有request

session

bean的生命周期

1.通过构造器创建bean实例(无参构造)

2.为bean的属性这只值(调用set方法)

​ 把bean实例传递bean后置处理器的方法

3.调用bean初始化方法(需要进行配置) (init-method=“initMethod()”)

​ 把bean实例传递bean后置处理器的方法

4.当关闭容器时,调用bean的销毁方法(需要进行配置销毁的方法);(destroy-method=“destroyMethod()”);

bean的后置处理器,有6步

配置后置处理器

<bean id="myBeanPost" class="..."></bean>
都添加了后置处理器

xml自动装配

什么时自动装配

根据指定装配规则,Spring自动蒋匹配属性进行注入

byName 
	注入bean的id的值和属性名称一样
byType
	根据类型装配,不能定义相同类型定义多个。
<bean id="emp" class=".." autowire="byName">
	<!-- <property name="dept" ref="dept"></property>-->
</bean>

<bean id="dept" class="..."></bean>

IOC操作bean管理(外部属性文件)

1、直接配置数据库信息

配置德鲁伊连接池

引入德鲁伊连接池jar包

引入文件

引入context命名空间

<bean id="dataSource" class="">
	<property name="driverClassName" value="${prop.driverClass}"></property>
    <property name="url" value="..."></property>
    <property name="username" value="..."></property>
    <property name="password" value="..."></property>
</bean>

引入外部属性问价 
<context:property-placeholder location="classpath:jdbc.properties">

</context:property-placeholder>


注解方式注入属性

@Component 表示普通注解

@Service service层

@Controller web层

@Repository dao层

功能时一样的,都可以用来创建对象

基于注解方式,对象的创建

引入依赖

aop依赖

开启组件扫描

  • 引入名称空间context
<context:component-scan base-packate="com.atauigu.spring5,com.atguigu">
	<context:include
</context:component-scan>
引用多个包,可以用逗号
或者扫描上层目录
    
<context:component-scan base-packate="com.atauigu.spring5,com.atguigu" use-default-filter="false">
    那些内容进行扫描
<context:include-filter type="annotation" expression="....controller">
        </context:include-filter>
</context:component-scan>
//注解中的名字可以不写,默认是首字母小写
@Component(value = "userService")
或者@Service
    @Repository
public class userService{
    public void add()
    {
        System.out.println("jafiew");
    }
}
注解属性注入

@AutoWired 根据属性类型进行自动注入

@Qualifier 根据属性名称注入

​ 和@Autowired一起使用

@Resource 都可以

@Value: 注入普通类型属性

public interface UserDao{
    
}

@Reposity(value = "aaa")
public class UserDaoImpl implements userDao
{
 	   
}

@Service
public class UserService
{
    @Autowired
    @Qualified("aaa")
    private UserDao userDao;
    
 	public void add()
    {
        System.out.println("service add....")
    }
}

配置类

@Configuration
@ComponentScan(basePackages = {"com...."})
public class SpringCConfig{
    
}

测试类

@Test
public void test(){
    ApplicationContext a = new AnnotationConfigApplicationContext(SpringConfig.class);
    
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值