2020java框架教程之spring注解扫描设置基础包
//设置扫描组件的基础包
//@ComponentScan("包名")
//@ComponentScan(basePackages = {"包名","包名1"})
//@ComponentScan(basePackages = {"包名","包名1"})
//@ComponentScan(basePackageClasses = {类名.class,类名1.class})
2020java框架教程之spring的自动装配的歧义性
两个类都实现了同一个接口,那么自动装配就会受到冲突,解决方案如下:
1.首选bean
在声明类的时候使用@Primary,只能定义一个注解

2.使用限定符
在声明的时候和装配的时候分别使用@Qualifier (更多…)
2020java框架教程之spring使用接口
1.创建web项目
2.导入jar包以及日志文件
3.创建接口与实现类
//接口
public interface UsersService {
void add();
}
@Component
//@Component 要写在实现类上,应用程序启动的时候
//就会自动扫描实现类,来将这个类的对象创建在spring的容器当中
public class UsersServiceImpl implements UsersService {
@Override
public void add() {
System.out.println("添加用户");
}
}
2020java框架教程之spring整合Junit4单元测试
1.创建web项目
2.导入jar包

3.创建类对象
4.创建test包以及test类
5.引入spring单元测试类
6.加载配置类
(更多…)
2020Java框架教程之spring自动装配
装配bean的三种方式
1.隐式的bean发现机制和自动装配
2.在java中进行显示的配置
3.在XML中进行显示的配置
创建一个CD类
@Component
public class CompactDisc {
public CompactDisc(){
System.out.println("CompactDisc无参构造函数");
}
public void play(){
System.out.println("正在播放音乐.....");
}
}
创建一个CD播放类
2020java框架教程之spring概述以及入门helloworld
什么是spring?
Spring是一个非常活跃的开源框架,由Rod Johnson开发,帮助分离项目组件之间的依赖关系,它的主要目的是简化企业开发
核心概念
IOC:Inversion Of Control控制反转
DI:Dependency Injection 依赖注入
AOP:Aspect Oriented Programming 面向切面编程
Spring的组成
2020java框架教程:jdbcTemplate的使用
1.创建项目
2.导包

3.日志文件
4.创建数据库表
5.创建工具类并连接数据库
6.创建实体类、dao、service以及实现类
使用JdbcTemplate
查询所有:
public List<Role> getAllList() {
try{
return jt.query("select*from role", new RowMapper<Role>() {
@Override
public Role mapRow(ResultSet rs, int i) throws SQLException {
return roleMapper(rs);
}
});
}catch (Exception e){}
return null;
}
查询单个
public Role getID(int id) {
try{
return jt.queryForObject("select*from role where id=?", new RowMapper<Role>() {
@Override
public Role mapRow(ResultSet rs, int i) throws SQLException {
return roleMapper(rs);
}
},id);
}catch (Exception e){}
return null;
}
封装Mapper方法
public Role roleMapper(ResultSet rs){
Role r=new Role();
try {
r.setId(rs.getInt("id"));
r.setNames(rs.getString("names"));
r.setNames2(rs.getString("names2"));
return r;
} catch (Exception e) {}
return null;
}
使用spring管理对象和对象间的依赖
<context:property-placeholder location="classpath:database.properties"/>
<!-- 连接池 -->
<bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${driver}"/>
<property name="jdbcUrl" value="${url}"/>
<property name="user" value="${username}"/>
<property name="password" value="${password}"/>
</bean>
<!-- JDBCTemplate -->
<bean name="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- roleDao -->
<bean name="roleDao" class="dao.impl.RoleDaoImpl">
<property name="jt" ref="jdbcTemplate"/>
</bean>
2020java框架教程:springAOP的注解方式开发
1.创建web项目
2.引入jar包:
aopalliance.jar、aspectjweaver.jar
3.日志
log4j.properties
4.准备目标对象
先创建类的接口,然后创建类的实现类
5.编写通知
前置通知:在目标方法之前调用
后置通知(如果出现异常就不调用):在目标方法之后调用
后置通知:(无论是否出现异常都会调用):在目标方法之后调用
环绕通知:在目标方法之前、后调用
异常通知:出现异常则调用
(更多…)
2020java框架教程:spring的aop编程
1.创建web项目
2.引入jar包:
aopalliance.jar、aspectjweaver.jar
3.日志
log4j.properties
4.准备目标对象
先创建类的接口,然后创建类的实现类
5.编写通知
前置通知:在目标方法之前调用
后置通知(如果出现异常就不调用):在目标方法之后调用
后置通知:(无论是否出现异常都会调用):在目标方法之后调用
环绕通知:在目标方法之前、后调用
异常通知:出现异常则调用
(更多…)
2020java框架教程:spring的aop相关概念
1.AOP思想:横向重复,纵向抽取
2.底层实现:
Spring的AOP的底层用到两种代理机制:
JDK的动态代理:针对实现了接口的类产生代理。
Cglib 的动态代理:针对没有实现接口的类产生代理,应用的是底层的字节码增强的技术生成当前类的子类对象。
3.AOP的开发中相关术语:
(更多…)


