Spring
1:Spring下载地址
Spring jar包:http://projects.spring.io/spring-framework/
http://repo.spring.io/release/org/springframework/spring/
Eclipse插件:http://spring.io/tools/sts/all
2:Spring bean配置
代码方式:
1.导入jar包
2.配置Springconfig文件(通过反转控制bean)
3.获取:getBean();
Xml定义bean:
获取bean:
ClassPathXmlApplicationContext paths=new ClassPathXmlApplicationContext("spring.xml");
Beans
bean=(Beans)paths.getBean("spring");
bean.toSpring();
概念方式:
1.在项目中添加Spring核心jar包
2.配置bean文件
3.通过ClassPathxmlApplication 获取配置
1.创建IOC对象
2.从IOC中获取bean实例
3.特殊符号的时候,我们需要用在value里面用的
3:研究Bean
1:通过set方法注入值:
2.通过构造器注入值
例如
value:值
index:索引
type:类型
4.set和构造器注意事项:
1.set注入不能有构造方法
2.构造器注入必须指定构造方法
5.特殊符号转义:
例如
6.Bean的配置方法:
7.Bean的作用域:
?init-method属性:用于指定当前Bean的初始化方法,在Bean实例创建好后,首先会调用其指定名称的方法
?destory-method属性:用于指定当前Bean的销毁方法,在Bean即将被销毁之前会自动调用该属性指定的方法
ClassPathXmlApplicationContext.close()方法销毁bean
Lazy-init=”true”: 可以手动控制单例模式下是否实例化(默认:default)beans:default-lazy-init全局设置
8.P标签简化Bean:
在XML文件头部添加xmlns:p="https://www.doczj.com/doc/575909701.html,/schema/p"即可使用。
使用P:导入jar包spring-expression-4.3.10.RELEASE.jar
9.Bean集合:
元素对应于java.util.ArrayList.
9.Bean别名:
10.内部Bean
内部bean:
1.不能被外界所调用
2.IOC容器启动不会实例化
11.R ef属性
引入外bean
12.抽象bean +继承
1.子类通过parent属性得到父类beanid
2.父bean可以作为配置模板abstract =true
抽象bean 不能实例化,只能被继承
3.抽象bean可以没有class
4.ApplicationContext 不会加载抽象bean
12.SpEL
使用静态属性 #{T(https://www.doczj.com/doc/575909701.html,ng.Math).random()}
也可以调用自定义方法!
13.Bean注解
1.context:component-scan 属性指定一个需要扫描的包
2.@Component 基本注解
@Repository 表示持久层
@Service 服务层
@Controller 表现层
bean引用名字第一个字母小写,可以自定义bean的名称
org.springframework.stereotype.Controller
14.autowire属性
byName值:表示通过id名称来自动匹配;
byType值:表示通过class指定的类型来自动装配;
15.autowire注解
如果类型重复,可以配合Qualifier这个注解来完成@Autowired
@Qualifier("userimpl")
3:Aop
1.通过注解方式实现Aop步骤
1.导入jar包aspectjweaver-1.7.1
2.设置切入点@Aspect
3.启用注解配置
4.增强通知:
–@Before: 前置通知, 在方法执行之前执行
–@After: 后置通知, 在方法执行之后执行
–@AfterRunning:返回通知, 在方法返回结果之后执行
–@AfterThrowing:异常通知, 在方法抛出异常之后
–@Around: 环绕通知, 围绕着方法执行
2.切入点表达式
切入点表达式 execution(* com.service.impl..*.*(..))
1、execution(): 表达式主体。
2、第一个*号:表示返回类型,*号表示所有的类型。
3、包名:表示需要拦截的包名,后面的两个句点表示当前包和当前包的所有子包,com.service.impl包、子孙包下所有类的方法。
4、第二个*号:表示类名,*号表示所有的类。
5、*(..):最后这个星号表示方法名,
3.pointcut通用定义
1.@pointcut(“execution()”)
Public void put(){}//签名方法
@Before(“签名方法()” ) //调用
3.aop执行级别(顺序)
4.@Order(“number”)
级别越小,越先执行………
5.JoinPoint对象
joion.getSignature().getName() 获取方法名
getArgs();获取参数(返回数组类型)
@Pointcut("execution(public int com.test.been.Means.test1(..))") public void find(){}
@Before("find()")
public void test2(JoinPoint jPoint){
Object[] lis=jPoint.getArgs();
System.out.println("前"+lis[0]);
}
6.ProceedingJoinPoint对象
用在环绕通知里面:
//环绕通知
@Around("find()")
public Object around(ProceedingJoinPoint join){
Object res=0;
System.out.println("前置通知");
try {
res=join.proceed();
} catch (Throwable e) {
e.printStackTrace();
System.out.println("异常通知");
}
System.out.println("返回通知........."+res);
System.out.println("后置通知.........");
return res;
}
pjd.proceed(); 让方法继续执行
7.增强通知:
–@Before
–@After:
----------------------------------都携带JoinPoint对象
–@AfterRunning:
------------------------------JoinPoint对象(value="cuts()",returning="retus")–@AfterThrowing:
------------------------------JoinPoint对象(value="cuts()",throwing="ex")
–@Around:
1.必须有返回值
2.携带ProceedingJoinPoint对象
3.如何获取返回值join.proceed();不能返回Null
4. Throwable如果出现异常获取不到执行函数返回值
8.通过xml形式配置Aop
注意:不能使用
Pointcut:定义切点
returning="returns"/> P:属性 P:属性-ref 指向bean 4注解 首先我们应该导入spring-aop-4.3.10.RELEASE.jar然后在xml中配置扫描, base-package:设置扫描包路径,多个包逗号隔开 use-default-filters:开启关闭自动扫描类型 子标签: org.springframework.stereotype.Controller 自动装配 @Autowire属性:用于指定当前Bean的依赖关系的自动注入方式,其有五个值:byName值:表示通过id名称来自动匹配; byType值:表示通过class指定的类型来自动装配; 4:Jdbc 1.jdbc配置步骤 1.依赖 jdbc.jar tx.jar 。。。数据库驱动包 2.配置数据源 3.把数据源传递给jdbcTemplate; 1.使用jdbctemplate方法…. 1.jdbc配置方法有三种 class="org.springframework.jdbc.datasource.DriverManagerDataSource"> value="com.mysql.jdbc.Driver"> value="jdbc:mysql://localhost:3307/day26"> --> update方法:用于执行语句:insert delete update 可变参数:第一个参数是SQL语句,第二个开始是SQL语句中替换的参数。 Eq: getJdbcTemplate().update(sql,1,2) 2.jdbcTemplate方法 queryForObject 查询单列 queryForObject(sql,返回类型,...) queryForMap查询单行记录 queryForMap(sql) 返回类型是Map 通过get("字段")获取 queryForList查询多条记录: queryForList方法就是用于查询有限列作为结果,其结果为一个list,每个元素是一个map,每个map是一行。 execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句; jdbcTemplate.execute(CREATE TABLE USER (user_id integer, name varchar(100));