学習目標
- (1)Springインターフェース指向のプログラミング
- (2)スプリングとウェブの組み合わせ
- (3)Springとjunitの統合*
- (4)SpringJDBCTemplateの追加、削除、変更、およびチェック
- (5)春のAOP *
Springインターフェイス指向のプログラミング-Webプロジェクトの作成
インターフェイスのデカップリング
- (1)ProjectMavenを作成する
- (2)モジュールWebアプリMavenを作成します
- (3)java、reousrces、testを設定します
- (4)構成はpom.xmlに依存します
春のインターフェース指向のプログラミング-原則
- (1)インターフェース定義
ビジネスクラスインターフェースcom.xxx.service。DaoIXxxService
インターフェースcom.xxx.dao。IXxxDao
- (2)実装クラス
com.xxx.service.impl。XxxServiceImpl
com.xxx.dao.impl。XxxDaoImpl
- (3)インターフェースには複数の実装クラスがあります。
使用接口调用,将来更换实现类时,代码耦合底更低
判断方法:删除法
将来的には、実装クラスオブジェクトはSpringによって管理され、メンバー変数が使用されます。依赖注入
TestPersonService
public class TestPersonService {
@Test
public void test01(){
//用户的一个功能 ,通常对应咱们的一个业务 方法
//IPersonService PersonServiceImpl
//PersonServiceImpl PersonServiceImpl
//PersonServiceImpl personService = new PersonServiceImpl();
IPersonService personService = new PersonServiceImpl();
//调了一个login
Person person = new Person();
boolean flag = personService.login(person);
System.out.println(flag);
}
}
IPersonService
public interface IPersonService {
boolean login(Person person);
}
PersonServiceImpl
//类跟接口是实现关系
public class PersonServiceImpl implements IPersonService {
private IPersonDao dao = new PersonDaoImpl();
@Override
public boolean login(Person person) {
//..调用dao方法
boolean flag = dao.findByUserNameAndPassword(person);
return flag;
}
}
IPersonDao
public interface IPersonDao {
boolean findByUserNameAndPassword(Person person);
}
PersonDaoImpl
public class PersonDaoImpl implements IPersonDao {
public boolean findByUserNameAndPassword(Person person) {
return true;
}
}
Springインターフェイス指向のプログラミング-実装
- (1)PersonServiceImplTest
- (2)IPersonService
- (3)PersonServiceImpl
- (4)IPersonDao
- (5)PersonDaoImpl
- (6)春の注釈スキャン
- (7)春のDI
变量等号左边使用接口调用方法,加上 spring的getBean或者注解注入 可以达成实现类的解耦
PersonServiceImplTest
現在のプログラムはPersonServiceImplと結合されていません
ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
IPersonService personService = (IPersonService) context.getBean("personServiceImpl");
System.out.println(personService);
//调了一个login
PersonServiceImpl
現在のプログラムはPersonDaoImplと結合されていません
//类跟接口是实现关系
@Service
public class PersonServiceImpl implements IPersonService {
//private IPersonDao dao = new PersonDaoImpl();
@Autowired
private IPersonDao dao;
@Override
public boolean login(Person person) {
//..调用dao方法
boolean flag = dao.findByUserNameAndPassword(person);
return flag;
}
}