SpringBean的注入问题
Spring和bean的赋值取值
-
spring是一个容器,里面可以装对象,可以赋值取值,也可以帮我们创建对象 告诉Spring何如创造
-
一个对象,如何从Spring中取出对象 从spring容器中取出的对象,就不一定是浴室的对象, 而是被spring增强的对象
-
Bean:是从spring容器中取出的对象叫做bean
-
实体类的包名叫Bean,是从spring这里引申过来的 实体类的包有多种命名方式:entity,bean,domain
两个实体类
@Data
public class Student {
private int id;
private String name;
private category categoryBean;
private List lis;
private Map map;
}
@Data
public class category {
private int cid;
}
*默认情况下,由Spring容器中创建的的都是单例模式,也就是说不论容器取出几次,取出的都是一个对象如果修改此行为,那么需要为该bean设置一个scope属性,值为prototype
这样的话,每次从容器中取出的对象都是单独的
xml:space=“preserve”
(通俗的来说单例就是只创建一个,多例使用几次创建几次)
*
初建一个对象的同时,把该对象的属性进行赋值,能赋值的属性的前提,是该属性有setter方法,或者该属性是public的
创建一个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-3.0.xsd">
<bean id="hello" class="com.entity.Student" xml:space="preserve">
<property name="id" value="1"></property>
<property name="name" value="张三"></property>
<!--这里是对集合的赋值-->
<property name="lis">
<list>
<value>打老虎</value>
</list>
</property>
<!--这里是map-->
<property name="map">
<map>
<entry key="1" value="注意身体程序员" />
</map>
</property>
<property name="map">
<props>
<!--两种赋值方式-->
<prop key="1">吃饭了嘛?</prop>
</props>
</property>
<!-- 引入另一个bean对象 使用ref赋值 -->
<property name="categoryBean" ref="category1" />
</bean>
<bean id="category1" class="com.entity.category" >
<property name="cid" value="1" />
</bean>
</beans>
创建Spring容器对象,通过加载配置文件创建出来的
ClassPathXmlApplicationContext 加载配置文件
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("/spring-conf.xml");
Object hello = ctx.getBean("hello");
if(hello instanceof Student){
System.out.println(hello);
}
从spring容器中取出BookBean类型的对象
能取得前提是容器中只有一个该类型的bean才行
BookBean bean = ctx.getBean(BookBean.class);
同时根据id和类型取出id
Student helo = ctx.getBean("hello", Student.class);
从一个容器中取出一个对象,赋值给变量的过程叫做:装配
上面大致有两种装配方式,根据id装配和根据类型装配
spring的3大核心技术
DI 依赖注入
IOC 控制反转
AOP 面向切面编程
若是使用框架注入在xml已经完成
在任意地方引入xml即可即可不用在写@service等注解
@ImportResource("classpath:config/spring-config.xml")
代码千万行,注视第一行。格式不规范,报错两行泪!