首页 技术 正文
技术 2022年11月15日
0 收藏 525 点赞 3,340 浏览 4293 个字

1.Spring基本框架的概念

 Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring模块构建在核心容器之上,核心容器定义创建、配置和管理bean的方式。组成Spring框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现,一个支持DI/IOC和AOP开源的容器框架。

2.特点

DI依赖注入:组件以特定方式接收来自容器的资源注入

IOC控制反转:反转资源获取的方向

AOP面向切面编程

3.使用

(1)定义容器

Spring基本框架

(2)得到容器

Spring基本框架

具体的代码实现:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd"> <bean id="car1" class="com.hanqi.test.Car">
<property name="carNumber" value="鲁C12345"></property>
</bean>
<bean id="car" class="com.hanqi.test.Car">
<property name="carNumber" value="鲁C14345"></property>
</bean>
<bean id="p1" class="com.hanqi.test.Person">
<constructor-arg name="name" value="张三"></constructor-arg>
<constructor-arg name="age" value="30"></constructor-arg>
<property name="car" ref="car1"></property>
<property name="bankCards">
<list>
<value>123456</value>
<value>456798</value>
<value>233339</value>
</list>
</property>
</bean>
<util:list id="bankCards">
<value>12344</value>
<value>13444</value>
<value>15344</value>
</util:list>
<!-- 使用p标签 -->
<bean id="p2" class="com.hanqi.test.Person"
p:name="李四" p:age="20" p:car-ref="car1" p:bankCards-ref="bankCards"></bean>
<!-- 自动装配
<bean id="p3" class="com.hanqi.test.Person" autowire="byType"></bean>-->
<!-- 自动装配 -->
<bean id="p4" class="com.hanqi.test.Person" autowire="byName" p:name="王五" p:age="30"></bean>
<bean id="p5" parent="p1" p:name="张小三" p:age="18"></bean>
<!-- 定义模板,只能被继承,不能被外部使用 -->
<bean id="m1" class="com.hanqi.test.Person" abstract="true"
p:name="默认名称" p:age="20" p:car-ref="car1" p:bankCards-ref="bankCards"></bean>
<!-- 默认是单例的 -->
<bean id="p6" scope="prototype" parent="m1" p:name="王芳" p:age="38"></bean>
<!-- 加载外部配置文件 -->
<context:property-placeholder location="classpath:person.properties"/> <bean id="p7" class="com.hanqi.test.Person" p:name="${name}" p:age="${age}"></bean>
</beans>

定义的Person类

package com.hanqi.test;import java.util.List; public class Person {    private String name;
private int age; private List<String> bankCards;
private Car car;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public List<String> getBankCards() {
return bankCards;
}
public void setBankCards(List<String> bankCards) {
this.bankCards = bankCards;
}
public Car getCar() {
return car;
}
public void setCar(Car car) {
this.car = car;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", bankCards=" + bankCards + ", car=" + car + "]";
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
System.out.println("带参数的构造方法Person被实例化了");
}
public Person() {
super();
System.out.println("不带参数的构造方法Person被实例化了");
}}

定义的Car类

package com.hanqi.test;public class Car {        private String carNumber;        public String getCarNumber() {
return carNumber;
} public void setCarNumber(String carNumber) {
this.carNumber = carNumber;
} @Override
public String toString() {
return "Car [carNumber=" + carNumber + "]";
} public Car() {
super(); } public Car(String carNumber) {
super();
this.carNumber = carNumber;
}}

测试类

package com.hanqi.test;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestPerson { public static void main(String[] args)
{
// 1 加载容器
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); // 2 从容器中获取对象
Person p1 =(Person)ac.getBean("p1");
System.out.println(p1); Person p2 =(Person)ac.getBean("p2");
System.out.println(p2);// Person p3 =(Person)ac.getBean("p3");
// System.out.println(p3); Person p4 =(Person)ac.getBean("p4");
System.out.println(p4);
// 继承的对象
Person p5 =(Person)ac.getBean("p5");
System.out.println(p5); Person p6 =(Person)ac.getBean("p6");
System.out.println(p6); Person p6_1 =(Person)ac.getBean("p6");
System.out.println(p6_1);
if(p6==p6_1)
{
System.out.println("p6 == p6_1");
}
else
{
System.out.println("p6 !=p6_1");
}
// 模板不能被调用
// Person m1 =(Person)ac.getBean("m1");
// System.out.println(m1); Person p7 =(Person)ac.getBean("p7");
System.out.println(p7);
}
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,910
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,435
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,250
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,061
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,693
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,731