快速上手Spring
快速上手Spring
HelloSpring
1.编写一个hello实体类
public class Hello {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Hello{" +
"name='" + name + '\'' +
'}';
}
}
2.编写我们的配置Bean文件applicationContext.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">
<!-- 使用Spring来创建对象,在Spring这些都称为Bean
类型 变量名 =new 类型();
Hello hello=new Hello();
id=变量名
class=new 的对象;
property 相当于给对象的属性设置的一个值
-->
<bean id="hello" class="com.pojo.Hello">
<property name="name" value="hello"/>
</bean>
</beans>
3.MyTest
public class MyTest {
public static void main(String[] args) {
//ClassPathXmlApplicationContext:可以加载类路径下的配置文件,要求配置文件必须在类路径之下。
//获取Spring的上下文对象!
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
//我们的对象都在Spring中管理了,我们要使用,直接在里面去取出来就可以了!
//getBean : 参数即为spring配置文件中bean的id
Hello hello=(Hello) context.getBean("hello");
System.out.println(hello.toString());
}
}
- Hello 对象是谁创建的 ? 【hello 对象是由Spring创建的
- Hello 对象的属性是怎么设置的 ? hello 对象的属性是由Spring容器设置的
这个过程就叫控制反转 :
- 控制 : 谁来控制对象的创建 , 传统应用程序的对象是由程序本身控制创建的 , 使用Spring后 , 对象是由Spring来创建的
- 反转 : 程序本身不创建对象 , 而变成被动的接收对象 .
依赖注入 : 就是利用set方法来进行注入的.
IOC是一种编程思想,由主动的编程变成被动的接收
OK , 到了现在 , 我们彻底不用再程序中去改动了 , 要实现不同的操作 , 只需要在xml配置文件中进行修改 , 所谓的IoC,一句话搞定 : 对象由Spring 来创建 , 管理 , 装配 !
思考
- Hello 对象是谁创建的 ? 【hello 对象是由Spring创建的
- Hello 对象的属性是怎么设置的 ? hello 对象的属性是由Spring容器设置的
这个过程就叫控制反转 :
- 控制 : 谁来控制对象的创建 , 传统应用程序的对象是由程序本身控制创建的 , 使用Spring后 , 对象是由Spring来创建的
- 反转 : 程序本身不创建对象 , 而变成被动的接收对象 .
依赖注入 : 就是利用set方法来进行注入的.
IOC是一种编程思想,由主动的编程变成被动的接收
IOC创建方式
1.使用无参构造创建对象,默认!
User
public class User {
private String name;
public User(){
System.out.println("User的无参构造!");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void show(){
System.out.println("name="+name);
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
'}';
}
}
applicationContext.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="user" class="com.pojo.User">
<property name="name" value="loveyourself"/>
</bean>
</beans>
MyTest
public class MyTest {
public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
User user=(User) context.getBean("user");
user.show();
}
}
//结果可以发现,在调用show方法之前,User对象已经通过无参构造初始化了!
2.通过有参构造方法来创建。
-
下标赋值
<!-- 第一种根据index参数下标设置 --> <bean id="userT" class="com.kuang.pojo.UserT"> <!-- index指构造方法 , 下标从0开始 --> <constructor-arg index="0" value="loveyourself"/> </bean>
-
类型赋值
<!--第二种,通过类型创建,不建议使用!--> <bean id="user" class="com.pojo.User"> <constructor-arg type="java.lang.String" value="loveyourself"/> </bean>
-
参数名赋值
<!--第三种,通过类型创建,不建议使用!--> <bean id="user" class="com.pojo.User"> <constructor-arg name="name" value="loveyourself"/> </bean>
总结:在配置文件(applicationContext)加载的时候,容器中管理的对象就已经初始化了!
Spring配置
-
别名
<bean id="user" class="com.pojo.User"> <constructor-arg name="name" value="loveyourself"/> </bean> <!--设置别名:在获取Bean的时候可以使用别名获取--> <alias name="user" alias="userbieming"/> <!-- User user=(User) context.getBean("userbieming"); -->
-
Bean的配置
<!--bean就是java对象,由Spring创建和管理--> <!--id:bean的唯一标识符,也就是相当于我们学的对象名 class: bean 对象所对应的权限定名:包名+类型 name: 也是别名,而且name可以同时取多个别名--> <bean id="userT" class="com.pojo.UserT" name="userT2,userT3"> <property name="name" value="loveyourself"/> </bean>
-
import
这个import一般用于团队开发使用,它可以将多个配置文件,导入合并为一个假设,现在项目中有多个人开发,这三个人复制不同的类开发,不同的类需要注册在不同的bean中,我们可以利用import将所有人的beans.xml合并为一个总的!
<import resource="applicationContext2.xml"/>