Spring-02 第一个Spring程序
第一个Spring程序
1.导入依赖
<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.1.10.RELEASE</version></dependency>
2.创建实体类
public class Spring {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public void show(){System.out.println( name );}}
3.创建配置文件
创建Spring配置文件,命名为:
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.xsd\"><!--bean就是java对象 , 由Spring创建和管理--><bean id=\"Spring\" class=\"pojo.Spring\"><property name=\"name\" value=\"Spring\"/></bean></beans>
4.测试
public claad8ss SpringTest {@Testpublic void FirstSpring(){ApplicationContext context = new ClassPathXmlApplicationContext(\"applicationContext.xml\");Spring spring = (Spring) context.getBean(\"Spring\");spring.show();}}
思考:
- Hello 对象是谁创建的 ? hello 对象是由Spring创建的
- Hello 对象的属性是怎么设置的 ? hello 对象的属性是由Spring容器设置的
这个过程就叫控制反转 :
- 控制 : 谁来控制对象的创建 , 传统应用程序的对象是由程序本身控制创建的 , 使用Spring后 , 对象是由Spring来创建的
- 反转 : 程序本身不创建对象 , 而变成被动的接收对象 .
依赖注入 : 就是利用set方法来进行注入的.
IOC是一种编程思想,由主动的编程变成被动的接收
Spring案例
接着本博客
Spring-01
文章中的案例,进行Spring配置。
1.创建配置文件
使用Spring来创建对象,在spring中这些都被称为Bean
类型 变量名 = new 类型(); 例如:Hello hello = new Hello();
id = 变量名
class = new 的对象
property = 相当于给对象的数性设置一个值
name = name并不是属性 , 而是set方法后面的那部分 , 首字母小写
ref = 引用spring中创建好的对象 ,引用另一个bean的id
value = 基本数据类型
<?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\"><bean id=\"MysqlImpl\" class=\"Dao.Sql.UserDaoMySqlImpl\"/><bean id=\"OracleImpl\" class=\"Dao.Sql.UserDaoOracleImpl\"/><bean id=\"ServiceImpl\" class=\"Service.UserServiceImpl\"><property name=\"userDao\" ref=\"OracleImpl\"/></bean></beans>
2.测试
@Testpublic void Spring(){ApplicationContext context = new ClassPathXmlApplicationContext(\"bean.xml\");UserServiceImpl serviceImpl = (UserServiceImpl) context.getBean(\"ServiceImpl\");serviceImpl.getUser();}
本次引用的是
OracleImpl
,结果为:
不用再程序中去改动了 , 要实现不同的操作 , 只需要在xml配置文件中进行修改,所谓的IoC,就是对象由Spring 来创建 , 管理 , 装配 !
IOC创建对象方式
1.无参构造方法
1.1 构建实体类
public class User {private String name;public User() {System.out.println(\"user无参构造方法\");}public void setName(String name) {this.name = name;}public void show(){System.out.println(\"name=\"+ name );}}
1.2 创建配置文件
<?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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd\"><bean id=\"user\" class=\"pojo.User\"><property name=\"name\" value=\"ZC\"/></bean></beans>
1.3 测试
@Testpublic void test(){ApplicationContext context = new ClassPathXmlApplicationContext(\"bean.xml\");User user = (User) context.getBean(\"user\");user.show();}
2.有参构造方法
2.1 构建实体类
public class UserT {private String name;public UserT(String name) {this.name = name;}public void setName(String name) {this.name = name;}public void show(){System.out.println(\"name=\"+ name );}}
2.2 构建配置文件
bean.xml
有三种方式编写
第一种:根据index参数下标设置
<bean id=\"userT\" class=\"pojo.UserT\"><!-- index指构造方法 , 下标从0开始 --><constructor-arg index=\"0\" value=\"ZC2\"/></bean>
第二种:根据参数名字设置
<bean id=\"userT\" class=\"pojo.UserT\"><!-- name指参数名 --><constructor-arg name=\"name\" value=\"ZC2\"/></bean>
第三种:根据参数类型设置
<bean id=\"usead8rT\" class=\"pojo.UserT\"><constructor-arg type=\"java.lang.String\" value=\"ZC2\"/></bean>
2.3 测试
@Testpublic void test1(){ApplicationContext context = new ClassPathXmlApplicationContext(\"bean.xml\");UserT usert = (UserT) context.getBean(\"userT1\");usert.show();}
在配置文件加载的时候,其中管理的
所有对象
都已经初始化了,所以会出现User类的无参方法。
Spring配置
1.别名
别名 : 如果添加了别名,我们也可以使用别名获取到这个对象
<alias name=\"User\" alias=\"u1\"></alias>
2.Bean的配置
id 是bean的标识符,要唯一;
如果没有配置id,name就是默认标识符
如果配置id,又配置了name,那么name是别名
name可以设置多个别名,可以用逗号,分号,空格隔开
<bean id=\"hello\" name=\"hello2 h2,h3;h4\" class=\"pojo.Hello\"><property name=\"name\" value=\"Spring\"/></bean>
如果不配置id和name,可以根据applicationContext.getBean(.class)获取对象;
class是bean的全限定名=包名+类名
UserT usert = context.getBean(UserT.class);
3.import
import
可以将不同的bean.xml引入到一个配置文件中。
<import resource=\"{path}/beans.xml\"/>
个人博客为:
MoYu\’s Github Blog
MoYu\’s Gitee Blog