HelloSpring
程序员文章站
2022-07-15 10:23:52
...
1.HelloSpring
1.1编写一个Hello实体类
package com.ming.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Hello {
private String str;
}
1.2 编写我们的spring文件 , 这里我们命名为beans.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">
<!-- 使用Spring来创建对象,在Spring这些都称为Bean
类型 变量名 = new 类型();
Hello hello=new Hello();
id = 变量名
class = new 的对象
Property 相当于给对象中的属性设置一个值!
-->
<bean id="oo" class="com.ming.pojo.Hello">
<property name="str" value="hello,spring"/>
</bean>
</beans>
3、我们可以去进行测试了
@Test
public void test(){
//解析beans.xml文件 , 生成管理相应的Bean对象
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
//getBean : 参数即为spring配置文件中bean的id .
Hello hello = (Hello) context.getBean("hello");
hello.show();
}
思考
-
Hello 对象是谁创建的 ? 【hello 对象是由Spring创建的
-
Hello 对象的属性是怎么设置的 ? hello 对象的属性是由Spring容器设置的
这个过程就叫控制反转 :
-
控制 : 谁来控制对象的创建 , 传统应用程序的对象是由程序本身控制创建的 , 使用Spring后 , 对象是由Spring来创建的
-
反转 : 程序本身不创建对象 , 而变成被动的接收对象 .
依赖注入 : 就是利用set方法来进行注入的.
IOC是一种编程思想,由主动的编程变成被动的接收
可以通过newClassPathXmlApplicationContext去浏览一下底层源码 .
修改案例一
<bean id="UserDaoMysqlImp" class="com.ming.Dao.UserDaoMysqlImp"/>
<bean id="UserDaoSqlImp" class="com.ming.Dao.UserDaoSqlImp"/>
<!--注意: 这里的name并不是属性 , 而是set方法后面的那部分 , 首字母小写-->
<!--引用另外一个bean , 不是用value 而是用 ref-->
<bean id="UserServiceImp" class="com.ming.Service.UserServiceImp">
<property name="userDao" ref="UserDaoMysqlImp"/>
</bean>
测试!
@Test
public void Text02(){
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
UserServiceImp userServiceImp = (UserServiceImp) context.getBean("UserServiceImp");
userServiceImp.Transfer();
}
`
IOC创建对象方式
- beans.xml默认 通过无参构造方法来创建
- beans.xml可以通过有参构造方法来给属性设置(三种方式编写)
<!-- 第一种根据index参数下标设置 -->
<bean id="user" class="com.mingo2.pojo.User">
<!-- index指构造方法 , 下标从0开始 -->
<constructor-arg index="0" value="kuangshen2"/>
</bean>
推荐使用
<!-- 第二种根据参数名字设置 -->
<bean id="userT" class="com.kuang.pojo.UserT">
<!-- name指参数名 -->
<constructor-arg name="name" value="kuangshen2"/>
</bean>
<!-- 第三种根据参数类型设置 -->
<bean id="userT" class="com.kuang.pojo.UserT">
<constructor-arg type="java.lang.String" value="kuangshen2"/>
</bean>
结论:在配置文件加载的时候。其中管理的对象(无参构造)都已经初始化了!
2.Spring配置
2.1 别名
alias 设置别名 , 为bean设置别名 , 可以设置多个别名
<!--设置别名:在获取Bean的时候可以使用别名获取-->
<alias name="userT" alias="userNew"/>
2.2 Bean的配置
<!--bean就是java对象,由Spring创建和管理-->
<!--
id 是bean的标识符,要唯一,如果没有配置id,name就是默认标识符
如果配置id,又配置了name,那么name是别名
name可以设置多个别名,可以用逗号,分号,空格隔开
如果不配置id和name,可以根据applicationContext.getBean(.class)获取对象;
class是bean的全限定名=包名+类名
-->
<bean id="hello" name="hello2 h2,h3;h4" class="com.kuang.pojo.Hello">
<property name="name" value="Spring"/>
</bean>
2.3 import
一般用于团队开发使用,它可以将多个配置文件,导入合并为一个。
- applicationContext.xml
<import resource="beans.xml">
<import resource="beans2.xml">
<import resource="beans3.xml">
上一篇: spring 常用注解
下一篇: Spring5-02-IOC
推荐阅读