spring
Spring 框架带来的的好处:
非侵入性的,保持内部代码的完整。
组件间的依赖关系减少,极大改善了代码的可重用性。
极大地简化了软件开发复杂性,方便解耦,简化开发。
对JDBC进行了轻量级的封装,可以更加灵活的去操作数据库,提供了文件上传、定时器等常用工具类,并且,方便集成各种优秀框架,Spring 现在能与所有主流开发框架集成,可谓是一个万能框架,Spring 让 JAVA 开发变得更多简单,它的地位是很高的。
spring的主要核心是
(1)IOC(控制反转)
在之前的java开发模式中,当需要一个对象时,我们会手动new或者调用。而spring容器为我们创建了所需要的对象,我们使用时不需要自己去创建,直接调用Spring为我们提供的对象就行。
package sping.pig.dao;
import sping.pig.dao.model.User;
public interface UserDao {
User userPwd(String username ,String pwd);
}
public class UserDaoImpl implements UserDao {
@Override
public User userPwd(String username, String pwd) {
return new User(username);
}
public void setNames(List<String> names) {
this.names = names;
}
}
package sping.pig.service;
public interface UserService {
String login(String username,String pwd);
}
package sping.pig.service.impl;
import sping.pig.dao.UserDao;
import sping.pig.dao.model.User;
import sping.pig.service.UserService;
public class UserServiceImpl implements UserService {
private UserDao userDao;
@Override
public String login(String username, String pwd) {
User user=userDao.userPwd(username,pwd);
return user!=null?"yes":"nonono";
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
}
package sping.pig.web;
import sping.pig.service.UserService;
public class UserController {
private UserService userService;
public String log(String username, String pwd) {
String emg = userService.login(username, pwd);
return emg;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
}
以上代码中属性是没有被初始化的,默认为null,此时我们就配置beans.xml,指定bean的类路径及互相之间的依赖
<?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 http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="UserDao" class="sping.pig.dao.DaoImpl.UserDaoImpl"/>
<bean id="UserService" class="sping.pig.service.impl.UserServiceImpl">
<property name="userDao" ref="UserDao"></property>
</bean>
<bean id="UserController" class="sping.pig.web.UserController">
<property name="userService" ref="UserService"></property>
</bean>
</beans>
然后就可以通过ioc容器进行操作。
ApplicationContext act=new ClassPathXmlApplicationContext("springLillPig.xml");
System.out.println(act);
UserController userController=act.getBean("userController",UserController.class);
String message=userController.log("abc","123");
System.out.println(message);
}
(2)DI(依赖注入)
spring这个容器中,替你管理着一系列的类,前提是你需要将这些类交给spring容器进行管理,然后在你需要的时候,不是自己去定义,而是直接向spring容器索取,当spring容器知道你的需求之后,就会去它所管理的组件中进行查找,然后直接给你所需要的组件。
(3)AOP(面向切面编程)
面向切面编程(AOP):在面向对象编程(OOP)思想中,我们将事物纵向抽象成一个个的对象。而在面向切面编程中,我们将一个个对象某些类似的方面横向抽象成一个切面,对这个切面进行一些如权限验证,事物管理,日志等操作处理的过程就是面向切面编程的思想。