相册网站建设目的,商城微网站如何做,wordpress被提权,简易app软件Spring
1.Spring是什么?
spring是一个开源的Java应用框架#xff0c;它提供了一套全面的基础设施支持
2.Spring框架的主要特点
1#xff09;依赖注入#xff08;Dependency Injection#xff0c;DI#xff09;
2#xff09;面向切面编程#xff08;AOP#xff09…Spring
1.Spring是什么?
spring是一个开源的Java应用框架它提供了一套全面的基础设施支持
2.Spring框架的主要特点
1依赖注入Dependency InjectionDI
2面向切面编程AOP
3事务管理
4Web支持
5数据访问
6测试支持
7扩展性
3.为什么使用Spring
1方便解耦简化开发
2Spring就是一个大工厂可以将所有对象创建和依赖关系维护的工作交给Spring来完成
3Spring提供面向切面编程可以方便地实现对程序进行权限拦截、运行监控等功能
4声明式事务的支持只需要通过配置就可以完成对事务的管理
5方便集成各种优秀的框架
6降低JavaEE中API的使用难度
4.Spring的IOC
IOC是控制反转即获取依赖对象的过程被反转了。
控制反转之后获取依赖对象的过程由自身管理变成了由IOC容器自动注入。
简单来讲控制反转之后获取依赖对象的过程从原来的自己new一个对象变成了从IOC容器中拿出来直接用即可。
5.Spring的环境搭建
5.1创建项目 5.2引入核心依赖
首先在最外层的pom.xml文件中引入Spring的核心基础依赖
!--Spring核心基础依赖--
dependencygroupIdorg.springframework/groupIdartifactIdspring-core/artifactIdversion${spring.version}/version
/dependency
dependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion${spring.version}/version
/dependency
dependencygroupIdorg.springframework/groupIdartifactIdspring-beans/artifactIdversion${spring.version}/version
/dependency
dependencygroupIdorg.springframework/groupIdartifactIdspring-expression/artifactIdversion${spring.version}/version
/dependency
!--日志相关--
dependencygroupIdcommons-logging/groupIdartifactIdcommons-logging/artifactIdversion1.2/version
/dependency
dependencygroupIdlog4j/groupIdartifactIdlog4j/artifactIdversion1.2.17/version
/dependency
!--测试相关--
dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/versionscopetest/scope
/dependency然后在properties标签下引入spring的版本
spring.version4.2.5.RELEASE/spring.version还需要设置打包方式其中pom为不参与打包jar为打为jar包war为打为war包
packagingpom/packaging5.3添加配置文件
在每个子模块下的resources文件夹下创建一个applicationContext.xml文件
然后在该文件中写入
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd/beans5.4将bean的实例化工作交给Spring来完成
5.4.1通过set方法注入
service层中UserServiceImpl类中的代码
public class UserServiceImpl implements IUserService {Setterprivate IUserMapper userMapper;Overridepublic User getUserById(int id) {User userById userMapper.getUserById(id);return userById;}
}在IOC容器中进行设置
bean nameuserMapper classcom.tledu.lsz.mapper.UserMapperImpl/
!--name为属性名字 / ref为引用的bean的名字--
bean nameuserService classcom.tledu.lsz.service.UserServiceImplproperty nameuserMapper refuserMapper/
/bean测试
public class UserTest {Testpublic void getUserById() {int id 1001;ClassPathXmlApplicationContext applicationContext new ClassPathXmlApplicationContext(applicationContext.xml);// userService是bean的id或nameUserServiceImpl userService (UserServiceImpl) applicationContext.getBean(userServiceImpl);User userById userService.getUserById(id);System.out.println(userById);}
}5.4.2通过构造方法注入
service层中UserServiceImpl类中的代码
public class UserServiceImpl implements IUserService {private IUserMapper userMapper;public UserServiceImpl() {}public UserServiceImpl(IUserMapper userMapper) {this.userMapper userMapper;}Overridepublic User getUserById(int id) {User userById userMapper.getUserById(id);return userById;}
}在IOC容器中进行设置
bean nameuserMapper classcom.tledu.lsz.mapper.UserMapperImpl/
!--name 属性名字 / ref 引用的bean的名字--
bean nameuserService classcom.tledu.lsz.service.UserServiceImplconstructor-arg refuserMapper/
/bean6.scope
6.1singleton
如果scope取值为singleton表明容器中创建时只存在一个实例也就是单例模式
如果不进行设置scope默认就是singleton
6.2prototype
每次获取都创建一个新的对象并且这个对象的生命周期不归Spring管理
7.自动装配自动注入
通过Autowire有两种取值①byName ②byType
7.1byName
byName是通过set方法的名字进行匹配的如果找不到就是不赋值
例如setUserMapper方法通过byName就会找到userMapper如果bean的name或id也为userMapper就可以找到区分大小写
bean nameuserMapper classcom.tledu.lsz.mapper.UserMapperImpl/
!--name 属性名字 / ref 引用的bean的名字--
bean nameuserService classcom.tledu.lsz.service.UserServiceImpl autowirebyName
/beanpublic class UserServiceImpl implements IUserService {private IUserMapper userMapper;//set方法 找的时候 把set去掉 U改为小写 找的是userMapperpublic void setUserMapper(IUserMapper userMapper) {this.userMapper userMapper;}public UserServiceImpl() {}public UserServiceImpl(IUserMapper userMapper) {this.userMapper userMapper;}Overridepublic User getUserById(int id) {User userById userMapper.getUserById(id);return userById;}
}7.2byType
byType是通过set方法的参数列表中的数据类型进行匹配的如果beans.xml中出现了多个相同类型的对象就会报错
如setUserMapper(IUserMapper userMapper)方法通过byType就会找到IusMapper如果是接口就去找对应的实现类
bean nameuserMapper classcom.tledu.lsz.mapper.UserMapperImpl/
!--name 属性名字 / ref 引用的bean的名字--
bean nameuserService classcom.tledu.lsz.service.UserServiceImpl autowirebyType
/beanpublic class UserServiceImpl implements IUserService {private IUserMapper userMapper;public void setUserMapper(IUserMapper userMapper) {this.userMapper userMapper;}public UserServiceImpl() {}public UserServiceImpl(IUserMapper userMapper) {this.userMapper userMapper;}Overridepublic User getUserById(int id) {User userById userMapper.getUserById(id);return userById;}
}8.生命周期
在bean标签中设置属性init-method“方法名”在初始化时会执行该方法
在bean标签中设置属性destroy-method“方法名”在销毁时会执行该方法
9.迟加载
在bean标签中设置属性lazy-init“true或false”