full-stack
Service Dao web轻量级
按需添加模块开源
可以获取源代码逐渐成为使用最多的 Java EE 企业应用开源框架
Test
:用于测试使用Core container:核心容器
,就是用于装Java Bean对象AOP:切面编程
Aspects
:提供了与AspectJ的集成Web
:用于支持数据展示层,支持http请求Transactions
:用于支持事物处理。用于解决业务层的事物处理问题。 编程式事务管理和声明式事务管理.控制反转- (Inversion of Control,缩写为IoC)
简单说:把创建对象和管理对象的权利交给spring
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>5.2.9.RELEASEversion>
dependency>
public class Test01SpringIoc {
@Test
public void test01(){
//1:创建ioc 容器对象 暂时看成map
ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
//2:给定配置文件的名称 applicationContext.xml
//3:调用容器的getBean方法获取id对应的对象
Person person = (Person) context.getBean("person");
System.out.println(person);
}
}
<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="person" class="com.wzx.domain.Person" />
beans>
context.getBean("id值", 类型.class);//无需转型
context.getBean("id值");//需转型
赋值的方式有两个
Person person1 = new Person();
//设置方法
person1.setId(1);
System.out.println(person1);
//构造方法赋值
Person person2 = new Person(1,"jack",20,new Date());
System.out.println(person2);
name:成员变量的名字
value:成员变量的值
一个property标签最后会调一个对应的set方法
<bean id="person2" class="com.wzx.domain.Person" >
<property name="id" value="10"/>
<property name="name" value="rose"/>
<property name="age" value="20"/>
bean>
<bean id="date1" class="java.util.Date"/>
<bean id="person3" class="com.wzx.domain.Person" >
<constructor-arg name="id" value="10"/>
<constructor-arg name="name" value="hello"/>
<constructor-arg name="age" value="20"/>
<constructor-arg name="birthday" ref="date1"/>
bean>
XxxFactory.get();
public class PersonFactory {
public static Person getBean() {
return new Person();//静态方法返回创建的对象
}
}
(3)factory-method
指定获取对象的静态工厂的方法
<bean class="com.wzx.demo02.PersonFactory" factory-method="getBean" id="person4"/>
<bean class="com.wzx.demo03.PersonFactory2" id="factory2"/>
<bean factory-bean="factory2" factory-method="getBean" id="person5"/>
》单例是什么?
内存中只有一个对象,每次获取到该对象的地址值一样
.
》多实例是什么?
内存中的每个对象都是一个新的对象,他们的地址值都不同
.
scope="singleton" 单例(默认值)
scope="prototype" 多例
scope="request" 创建的对象放到request域中
scope="session" 创建对象放到session对象
多实例
<bean id="person" class="com.wzx.domain.Person" scope="prototype"/>
单实例
<bean id="person" class="com.wzx.domain.Person" scope="singleton"/>
context.close()关闭容器
public class Person{
public void init(){
System.out.println("哇哇...");
}
public void eat(){
System.out.println("吃食堂...");
}
public void destory(){
System.out.println("呜呜...");
}
}
<bean id="person6" class="com.wzx.domain.Person"
init-method="init"
destroy-method="destory"
/>
(1)什么是依赖注入
DI (dependency injection) 依赖注入
含义:就是给对象的属性设置值
.
就是给对象的属性设置值
set方法给对象设置值
构造方法给对象初始化的时候设置值.
(2)property标签
set方式设置属性(掌握)
让spring调set方法,前提条件类中必须有set方法
name : 代表的是set方法去掉set,首字母小写setName Name name
value: 基本类型或字符串类型的值,具体给属性设置用的
ref (引用) : 引用对象的id,作为一个对象类型注入
(1)什么是复杂类型?
简单的是基本类型与字符串
Aarry 数组 List 集合 Map集合 Set集合 Properties集合
(2)如何给这些属性设置值
使用对应的子标签
array,list,map,set,props
//集合类型属于复杂类型
private String[] arr; //女朋友们
public void setArr(String[] arr) {
this.arr = arr;
}
public String[] getArr() {
return arr;
}
//List
private List<String> list;//前女朋友们
public void setList(List<String> list) {
this.list = list;
}
//set
private Set<String> set;//前女朋友们
public void setSet(Set<String> set) {
this.set = set;
}
//map
private Map<String,String> map;//前女朋友们
public void setMap(Map<String, String> map) {
this.map = map;
}
//properties
private Properties properties;//前女朋友们
public void setProperties(Properties properties) {
this.properties = properties;
}
<bean id="person7"
class="com.wzx.domain.Person">
<property name="name" value="jack"/>
<property name="arr">
<array>
<value >rosevalue>
<value >rosevalue>
<value >rosevalue>
array>
property>
<property name="list">
<list>
<value >rose1value>
<value >rose2value>
<value >rose3value>
list>
property>
<property name="set">
<set>
<value >rosevalue>
<value >rosevalue>
<value >rose3value>
set>
property>
<property name="map">
<map>
<entry key="10010" value="rose1"/>
<entry key="10086" value="rose2"/>
<entry key="110" value="rose3"/>
map>
property>
<property name="properties">
<props>
<prop key="10010">rose1prop>
<prop key="10086">rose2prop>
<prop key="110">rose3prop>
props>
property>
bean>