model/entity:实体层
service:业务逻辑层
dao:数据访问层
普通new对象方法,与IOC方法的区别
1.下载jar包后,选中External Library,点击File——Project Structure——Library,然后选择需要使用的jar包
2.配置文件
进行控制反转和依赖注入
查询maven仓库中,相应的依赖路径
方法二
1.创建maven工程
2.pop.xml文件中添加依赖,context自动包含相应的其他必要依赖
获得这些jar包
resource处新建一个xml文件,添加约束:
3.Spring Framework Documentation中,点入core页面,CTRL+F搜索关键字xmlns
复制第一段内容
粘贴至xml文件中,指定bean对象
4.然后在表现层实现bean对象的获取
用FlieSystem类获取核心容器对象时传递的参数需要是bean.xml文件的绝对路径(文件可以放在任意位置)
方法一
方法二
方法三
如上,执行时默认构造方法可以实现对象的创建,但若在括号中传入参数,又不重写默认构造方法,则不能成功创建
依赖注入:Dependency InjectionIOC的作用:降低程序间的耦合依赖关系的管理:交给spring来维护在当前类中需要用到其他类的对象,由spring为我们提供,只需要在配置文件中说明依赖关系的维护成为依赖注入能注入发数据有三类:基本类型和string其他bean类型(在配置文件中或者注释配置国的bean)注入的方式有三种1.使用构造函数提供2.使用set放大提供3.使用注解提供
bean.xml
AccountServiceImpl类
package com.itheima.service.impl;
import com.itheima.service.IAccountService;
import java.util.Date;
/*** 账户的业务层实现类*/
public class AccountServiceImpl implements IAccountService {//如果是经常变化的数据,并不适用于注入的方法private String name;private Integer age;private Date birthday;public AccountServiceImpl(String name,Integer age,Date birthday){this.name = name;this.age = age;this.birthday = birthday;}public void saveAccount(){System.out.println("service中的saveAccount方法执行了。。。"+name+","+age+","+birthday);}
}
client类
import com.itheima.service.IAccountService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/*** 模拟一个表现层,用于调用业务层*/
public class Client {public static void main(String[] args) {//1.获取核心容器对象ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");//2.根据id获取Bean对象IAccountService as = (IAccountService)ac.getBean("accountService");as.saveAccount();}
}
package com.itheima.service.impl;import com.itheima.service.IAccountService;import java.util.Date;/*** 账户的业务层实现类*/
public class AccountServiceImpl2 implements IAccountService {//如果是经常变化的数据,并不适用于注入的方法private String name;private Integer age;private Date birthday;public void setName(String name) {this.name = name;}public void setAge(Integer age) {this.age = age;}public void setBirthday(Date birthday) {this.birthday = birthday;}public void saveAccount(){System.out.println("service中的saveAccount方法执行了。。。"+name+","+age+","+birthday);}
}
package com.itheima.ui;import com.itheima.service.IAccountService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/*** 模拟一个表现层,用于调用业务层*/
public class Client {/**** @param args*/public static void main(String[] args) {//1.获取核心容器对象ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");//2.根据id获取Bean对象IAccountService as2 = (IAccountService)ac.getBean("accountService2");as2.saveAccount();}
}
AAA BBB CCC AAA BBB CCC AAA BBB CCC
ccc ddd
package com.itheima.service.impl;import com.itheima.service.IAccountService;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;public class AccountServiceImpl3 implements IAccountService {private String[] myStrs;private List myList;private Set mySet;private Map myMap;private Properties myProps;public AccountServiceImpl3() {}public void setMyStrs(String[] myStrs) {this.myStrs = myStrs;}public void setMyList(List myList) {this.myList = myList;}public void setMySet(Set mySet) {this.mySet = mySet;}public void setMyMap(Map myMap) {this.myMap = myMap;}public void setMyProps(Properties myProps) {this.myProps = myProps;}public void saveAccount() {System.out.println(Arrays.toString(this.myStrs));System.out.println(this.myList);System.out.println(this.mySet);System.out.println(this.myMap);System.out.println(this.myProps);}
}