Java Spring框架 总结
一、环境的搭建
- 下载和安装JDK(一般也包含了jre)
- 配置jdk的系统变量JAVA_HOME
- 下载tomcat
- 4.下载mysql
- 下载开发工具eclipse或者idea并配置好上面下载的工具
二、基础知识
- 容器:spring容器管理对象的生命周期,以及对象与对象之间的依赖关系。
- Ioc:控制反转,即依赖关系的转移
- 依赖注入:对象与对象之间依赖关系的实现,构造注入,属性setter注入。
- AOP:面向切面编程,将日志、安全、事务管理理解成一个“方面”,剥离出来,不混合在业务逻辑,实现复用。
- BeanFactory ApplicationContext 有三实现类:
ClassPathXmlApplicationContext 从类路径中找指定xml配置文件
FileSystemXmlApplicationContext 从文件系统路径找xml文件
XmlWebApplicationContext 从web系统的xml文件 - bean的作用域:
singleton (ioc容器中bean只有一个实例)
prototype (一个bean多个实例)
request (不同http请求返回不同实例)
session(不同http session请求不同实例)
global session(全局session中 bean只有一个) - 注解:
@Component 仅仅表示一个组件bean
@Repository 用于将数据访问层(DAO)标识为spring的bean
@Service 用于业务层(Service)标识为bean
@Controller 用于控制层(Controller)标识为bean
@AutoWired 用于对bean的属性变量和属性setter、getter进行标注,完成bean的自动配置工作
@Resource 作用同@AutoWired,不同@AutoWired按照Bean的类型进行装配,@Resource按照Bean的实例名称进行装配。
@Qualifier 将默认按bean类型装配改为按Bean实例名称进行装配 - 是
三、spring框架安装
- 下载spring-framework-x.x.x.RELEASE 版本
- 创建javaweb项目,新建lib文件夹
- lib放入 spring-core-x.x.xRELEASE.jar
spring-beans-x.x.x.RELEASE.jar
spring-context-x.x.x.RELEASE.jar
spring-expression-x.x.x.RELEASE.jar
4.右键Build Path -> Add to Build Path 添加进web项目构建路径
四、示例1
(1)新建IHello接口
package com.ssm
public interface IHello{
public void show();
}
(2)新建HelloSpring类
package com.ssm;
public class HelloSpringImpl implements IHello{
private String userName;
public HelloSpringImpl(String userName){
this.userName = userName;
}
public void setUserName(String userName){
this.userName = userName;
}
public void show(){
System.out.Println(userName + ": 欢迎来到Spring世界,老而不老");
}
}
(3)创建applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 配置bean,spring创建其对象的实例-->
<bean id="helloSpring" class="com.ssm.HelloSpringImpl " scope = "singleton"> --bean默认作用域 一个容器只有一个共享bean实例
<property name="userName" value="李四"></property> -----setter方式注入--常用
<constructor-arg name ="userName" vlue = "李四"/> -----构造方式注入
</bean>
</beans>
(4)创建测试类,运行
package com.ssm
import org.springframework.context.ApplicationContext;
import org springframework.support.ClassPathXmlApplicationContext;
public class TestHelloSpring{
public static void main(String[] args){
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
HelloSpring helloSpring = (HelloSpring) ctx.getBean("helloSpring");
helloSpring.show();
}
}
---------------------------------
李四:欢迎来到Spring世界,老而不老
--------------------------------
五、较成熟示例2:
(1)创建接口类
package com.ssm.dao;
public interface UserDAO{
public boolean login(String loginName,String loginPwd);
}
(2)创建接口实现类:简单的登录验证实际中应该从数据库取数据
package com.ssm.dao.impl;
import com.ssm.dao.UserDAO;
public class UserDAOImpl implements UserDAO{
@Override
public boolean login(String loginName,String loginPwd){
if(loginName.equals("admin") && loginPwd.equals("123456"){
return true;
}else{
retrun false;
}
}
}
(3)创建service类
package com.ssm.dao.service;
public interface UserService{
public boolean login(String loginName,String loginPwd);
}
(3)创建service实现类
package com.ssm.service.impl;
import com.ssm.service.Userservice;
import com.ssm.dao.UserDAO
public class UserserviceImpl implements Userservice{
UserDAO userDAO;
public void setUserDAO(UserDAO userDAO){this.userDAO = userDAO};
@Override
public boolean login(String loginName,String loginPwd){
return userDAO.login(loginName,loginPwd);
}
}
(4)配置applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 配置bean,spring创建其对象的实例-->
<bean id="userDAO" class="com.ssm.dao.Impl.userDAOImpl"> </bean>
<bean id="userService" class="com.ssm.service.impl.UserviceImpl">
<property name="userDAO" ref="userDAO"/>
</bean>
</beans>
(5)创建测试类,运行
package com.ssm
import org.springframework.context.ApplicationContext;
import org springframework.support.ClassPathXmlApplicationContext;
import com.ssm.service.UserService;
public class TestSpring{
public static void main(String[] args){
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
UserService userService = ctx.getBean("userService");
boolean flag = userService.login("adiming,"123456");
if(flag){System.out.println("登录成功");}
else{System.out.println("登录失败");}
}
}
五、注解示例3:
使用注解@Repository
package com.ssm.dao.impl;
import org.springframework.stereotype.Repository;
import com.ssm.dao.UserDAO;
@Repository("userDAO")
public class UserDAOImpl implements UserDAO{
@Override
public boolean login(String loginName,String loginPwd){
if(loginName.equals("admin") && loginPwd.equals("123456"){
return true;
}else{
retrun false;
}
}
}
使用注解@Service 和@AutoWired
package com.ssm.service.impl;
import org.springframework.beans.factory.annotion.Autowired;
import org.springframework.stereotype.Service;
import com.ssm.service.Userservice;
import com.ssm.dao.UserDAO
@Service("userService")
public class UserserviceImpl implements Userservice{
@AutoWired
UserDAO userDAO;
public void setUserDAO(UserDAO userDAO){this.userDAO = userDAO};
@Override
public boolean login(String loginName,String loginPwd){
return userDAO.login(loginName,loginPwd);
}
}
修改配置类,需要开启组件扫描,让spring可以扫描类路径的类,并识别出注解
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsi="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 配置自动扫描的基包-->
<context:component-scan base-package="com.ssm"/> --需要扫描多个包时,可以用逗号分隔
</beans>