1.spring的做用?
①.Spring能帮咱们根据配置文件建立及组装对象之间的依赖关系。
②.Spring 面向切面编程能帮助咱们无耦合的实现日志记录,性能统计,安全控制。
③.Spring能很是简单的帮咱们管理数据库事务。
④.Spring还提供了与第三方数据访问框架(如Hibernate、JPA)无缝集成,并且本身也提供了一套JDBC访问模板,来方便数据库访问。
⑤.Spring还提供与第三方Web(如Struts、JSF)框架无缝集成,并且本身也提供了一套Spring MVC框架,来方便web层搭建。
⑥.Spring能方便的与Java EE(如Java Mail、任务调度)整合,与更多技术整合(好比缓存框架)。
2.spring的核心
IOC 控制反转 建立对象的控制权反向的转移给spring容器(BeanFactory)了 User u = new User();
DI 依赖注入 对象属性值经过配置文件注入
AOP 面向切面编程
3.Spring是一个轻量级的非侵入式的DI/IoC和AOP容器的开源框架
4.简单使用spring
1.导入所需的jar
lib包中找 : core context bean expression
第三方apache : commons-logging
2.建立spring配置文件
1)文件头
2)
<beans>
<bean id="名字" class="类全限定名" name="给当前类多个名字"
scope="指定当前类做用域 request session singleton prototype">没有属性</bean>java
<!--控制反转-->
<bean id="名字" class="类全限定名">
<!--DI依赖注入,自动装配(name)-->
<!--属性注入 setter方法结合无参构造-->
<property name="属性名" ref=“和上面beanid值保持一致” ></property> <!--属性是对象类型-->
<property name="属性名" value=“” ></property> <!--属性是基本数据类型-->
<property name="属性名" ><!--属性是集合类型-->
<list>
<value>****</value>
<value>****</value>
</list>
<map>
</map>
</property>
<!--有参注入 有参构造 可经过索引下标给指定的属性赋值,还能够经过type属性赋值,还可经过name属性赋值 -->
<constructor-arg index="" ref="" ></constructor-arg>
</bean>
</beans>
3)测试
BeanFactory factory = new ClassPathXmlApplicationContext(“spring。xml”);
XXXBean bean = (XXXBean)factory.getBean("beanId");
bean.方法名();mysql
5.spring 的aop
aop 面向切面编程
oop 面向对象编程 类 (最小的程序单元是类)web
6.使用注解的基本步骤spring
spring配置文件中
1) 启用注解 <context:annotation-config></context:annotation-config>
2)设置注解扫描到包 <context:component-scan base-package="com.qyxy"></context:component-scan> sql
类上可使用的注解
@Controller 控制层
@Service 业务层
@Repository 持久层
@Entity 实体bean
@Component 无法具体归类的时候使用数据库
@Scope 单例(service,dao)/多例(controller)express
类的属性上使用的注解
@Autowired 给对象属性装配值 默认状况下经过type自动装配值
@Qualifier(value="userDaoImpl") 经过id属性装配值apache
@Autowired 给基本属性装配值
@Value(value="10")编程
方法上可使用的注解
@PostConstruct 在初始化bean时执行特定方法
@PreDestroy 在销毁bean以前执行特定的方法json
aop 注解
spring配置中 添加<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
@Aspect 表明当前类是一个切面类
@Pointcut("execution(* com.qyxy.service.impl.*.*(..))")
public void pointcut() {}
@Before(value="pointcut()")
@After(value="pointcut()")
@Around(value="pointcut()")
spring的核心 IOC DI AOP
spring的注解
spring和其余框架的结合使用
spring+jdbc的结合 完成增删改查
spring+hibernate的结合
spring+hibernate+struts的结合
1.导入jar包
spring基础包:
aopalliance.jar 切面相关
aspectjweaver-1.6.8.RELEASE.jar 切面相关
commons-logging-1.2.jar spring依赖的第三方工具包
spring-aop-5.0.2.RELEASE-sources.jar 切面相关
spring-aop-5.0.2.RELEASE.jar 切面相关
spring-aspects-5.0.2.RELEASE-sources.jar 切面相关
spring-aspects-5.0.2.RELEASE.jar 切面相关
spring-beans-5.0.2.RELEASE-sources.jar 核心不可缺乏
spring-beans-5.0.2.RELEASE.jar 核心不可缺乏
spring-context-5.0.2.RELEASE-sources.jar 核心不可缺乏
spring-context-5.0.2.RELEASE.jar 核心不可缺乏
spring-core-5.0.2.RELEASE-sources.jar 核心不可缺乏
spring-core-5.0.2.RELEASE.jar 核心不可缺乏
spring-expression-5.0.2.RELEASE-sources.jar 核心不可缺乏
spring-expression-5.0.2.RELEASE.jar 核心不可缺乏
jdbc链接数据库及dbcp链接池的jar包:
commons-dbcp2-2.1.1.jar dbcp链接池
commons-pool2-2.4.2.jar dbcp链接池
mysql-connector-java-5.1.26-bin.jar mysql数据库查询
spring和jdbc结合使用的jar包:
spring-jdbc-5.0.2.RELEASE-sources.jar spring-jdbc结合使用
spring-jdbc-5.0.2.RELEASE.jar spring-jdbc结合使用
spring-tx-5.0.2.RELEASE-sources.jar spring-jdbc 事务管理
spring-tx-5.0.2.RELEASE.jar spring-jdbc 事务管理
hibernate最小需求jar包
antlr-2.7.7.jar 核心不可少
classmate-1.3.0.jar 核心不可少
dom4j-1.6.1.jar 核心不可少
geronimo-jta_1.1_spec-1.1.1.jar 核心不可少
hibernate-commons-annotations-5.0.1.Final.jar 核心不可少
hibernate-core-5.1.3.Final.jar 核心不可少
hibernate-jpa-2.1-api-1.0.0.Final.jar 核心不可少
jandex-2.0.3.Final.jar 核心不可少
javassist-3.20.0-GA.jar 核心不可少
jboss-logging-3.3.0.Final.jar 核心不可少
spring和hibernate结合的jar包
spring-orm-5.0.2.RELEASE-sources.jar spring-orm框架结合
spring-orm-5.0.2.RELEASE.jar spring-orm框架结合
struts使用的jar包
commons-fileupload-1.3.2.jar struts不可少
commons-io-2.4.jar struts不可少
commons-lang3-3.4.jar struts不可少
freemarker-2.3.23.jar struts不可少
javassist-3.20.0-GA.jar struts不可少
log4j-api-2.7.jar 日志管理
ognl-3.1.12.jar struts不可少
struts2-core-2.5.10.1.jar struts不可少
struts2-json-plugin-2.5.10.1.jar struts-json结合使用
struts和spring结合的jar包
struts2-spring-plugin-2.5.10.1.jar struts-spring结合使用
spring-web-5.0.2.RELEASE-sources.jar struts web应用
spring-web-5.0.2.RELEASE.jar struts web应用
jstl标签函数库须要的jar包
jstl.jar 页面使用jstl必须
standard.jar jstl依赖的jar
在使用aop切面切入action层时,默认会拦截action层数据。解决方案:struts.xml配置文件中添加如下配置,让struts始终考虑spring自动装载<constant name="struts.objectFactory.spring.autoWire.alwaysRespect" value="true"></constant> spring.xml中添加一下内容,<!-- 定义切面使用自动代理模式 --><aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>