虫部落是谁做的网站,有口碑的装修设计公司,无锡市城市建设规划局网站,贵阳网站建设方案报价目录 1.依赖注入
1.1构造
1.2set注入
2.基于XML的自动装配
2.1根据名称:
2.2根据类型:
2.3根据构造自动注入
3.Spring 文件中 Bean属性 1.依赖注入 依赖注入#xff0c;是IOC的一个方面#xff0c;是个通常的概念#xff0c;它有多种解释。这概念是说你不用创建对象是IOC的一个方面是个通常的概念它有多种解释。这概念是说你不用创建对象而只需要描述它如何被创建。你不在代码里直接组装你的组件和服务但是要在配置文件里描述哪些组件需要哪些服务之后一个容器IOC容器负责把他们组装起来。依赖注入 依赖指的是对象和对象之间的关联关系。注入指的是一种数据传递行为通过注入行为来让对象和对象产生关系。 依赖注入常见的实现方式包括两种 第一种set注入第二种构造注入 1.1构造 核心原理通过调用构造方法来给属性赋值 通过下标可以通过参数名也可以不指定下标和参数名可以类型自动推断。 bean iduserDao classcom.hu.dao.impl.UserDaoImpl/bean
bean iduserServiceo classcom.hu.Service.impl.userServiceImpl //这里的name 是构造方法上参数的名字 ref 是引用userDao对象constructor-arg nameuserDao refuserDao/constructor-arg/bean 1.2set注入 通过property标签获取到属性名userDao 通过属性名推断出set方法名setUserDao 通过反射机制调用setUserDao()方法给属性赋值 property标签的name是属性名。 property标签的ref是要注入的bean对象的id。(通过ref属性来完成bean的装配这是bean最简单的一种装配方式。装配指的是创建系统组件之间关联的动作) bean iduserServiceo classcom.hu.Service.impl.userServiceImpl property nameuserDao refuserDao/property/bean 注入基本类型
注入set集合 property namephonesset!--非简单类型可以使用ref简单类型使用value--value110/valuevalue110/value/set/property 注入List集合 property namelistlistvalue铁锤/valuevalue张三/valuevalue狼/value/list/property 注入Map集合 property nameaddrsmap!--如果key不是简单类型使用 key-ref 属性--!--如果value不是简单类型使用 value-ref 属性--entry key2 value上海浦东区/entry key3 value深圳宝安区//map/property 注入Properties property namepropertiespropsprop keydrivercom.mysql.cj.jdbc.Driver/propprop keyurljdbc:mysql://localhost:3306/spring/propprop keyusernameroot/propprop keypassword123456/prop/props/property 2.基于XML的自动装配
2.1根据名称: UserService Bean中需要添加autowirebyName表示通过名称进行装配。UserService类中有一个UserDao属性而UserDao属性的名字是aaa对应的set方法是setUserDao()正好和UserDao Bean的id是一样的。这就是根据名称自动装配。 userDao userDao ;
public void setUserDao(userDao userDao) {this.userDao userDao;}bean iduserDao classcom.hu.dao.impl.UserDaoImpl/beanbean iduserServiceo classcom.hu.Service.impl.userServiceImpl autowirebyName /bean 2.2根据类型: 可以看到无论是byName还是byType在装配的时候都是基于set方法的。所以set方法是必须要提供的。提供构造方法是不行的 //不能给id 或者给id取名 与set方法中参数名称一致bean iduserDao classcom.hu.dao.impl.UserDaoImpl/beanbean iduserServiceo classcom.hu.Service.impl.userServiceImpl autowirebyType /bean 2.3根据构造自动注入 提供构造函数:无需关系引用的id bean classcom.hu.dao.impl.UserDaoImpl/beanbean iduserServiceo classcom.hu.Service.impl.userServiceImpl autowireconstructor /bean 3.Spring 文件中 Bean属性 id: bean在spring容器的唯一标识spring容器中不可能同时存在两个相同的id。 class: 类的全限定名(类名包名),用“.”号连接 name: 设置别名在BeanFactory的getBean(“name”)中可以获取相应的bean。 autowire : byType byName 基于xml自动装配 destroy-method:它的作用是在销毁bean之前可以执行指定的方法。注意必须满足scope“singleton”并且destroy方法参数个数不能超过1并且参数类型只能为boolean。 init-method:它的作用是在创建一个bean之后调用该方法初始化方法必须是一个无参方法。 lazy-init: lazy-init 设置只对scop属性为singleton的bean起作用, lazy-init”false” 立即加载 在spring启动时立刻进行实例. lazy-init”true” 延迟加载 ,设置为true的bean将不会在ApplicationContext启动时提前被实例化而是在第一次向容器通过getBean索取bean时实例化的。 scope 默认scopesingleton情况下Bean对象的创建是在初始化Spring上下文的时候就完成的。 bean iduser classcom.hu.pojo.User scopesingleton执行这个ApplicationContext 创建对象了 单例ApplicationContext applicationContext new ClassPathXmlApplicationContext(spring-config.xml); 如果想让Spring的Bean对象以多例的形式存在可以在bean标签中指定scope属性的值为prototype这样Spring会在每一次执行getBean()方法的时候创建Bean对象调用几次则创建几次。