Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control:反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层 SpringMVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE 企业应用开源框架。
1.2Spring 的优势• 方便解耦,简化开发
• AOP 编程的支持
• 声明式事务的支持
• 方便程序的测试
• 方便集成各种优秀框架
• 降低 JavaEE API 的使用难度
1.3Spring 的体系结构 2. Spring 的IOC入门 2.1什么是程序的耦合耦合性(Coupling),也叫耦合度,是对模块间关联程度的度量。耦合的强弱取决于模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可以提高其独立性)。
2.2IOC底层分析2.2.1通过new创建
User user = new User(); 缺点,使用几次,就要创建几次,耦合度
↓
2.2.2通过接口实现类进行创建
UserDao userdao= new UserDaoImp(); UserDao userdao= new UserDaoImp2();
优势:更灵活,更容易拓展,复用性
缺点:接口和实现类耦合度较高
↓
2.2.3通过工厂模式,将接口和实现类进行组合起来
接口 实现类
工厂
class PubFactory{ public static UserDao getUserDaoInstance(){ return new UserDaoImp2(); } public OrderDao getOrderDaoInstance(){ return new OrderDaoImp(); } } UserDao userdao= PubFactory.getUserDaoInstance();
依旧存在耦合,实现类和工厂的耦合
↓
2.2.4工厂类+配置文件+反射
1.配置文件xml配置2.3IOC和DI的关系(ioc入门和好处)2.工程类通过返回返回对象 class PubFactory{ public Object getInstance(String id){ 2.1解析xml 2.2通过反射获取我们的Class Class clz= Class.forName('cm.hp.Dao.UserDaoImp'); 2.3创建对应的对象并返回 return clz.newInstance() } }
• IOC是控制反转,将创建对象的权利(new 对象的过程)交给Spring容器管理。不再由程序员自己创建创建对象,从而降低程序间的耦合关系。
• DI是依赖注入,需要有IOC的环境支持,当一个bean被Spring容器管理后,可以通过DI给该bean所属的实例的属性赋值。
2.4bean的生命周期 ,及 bean的scope使用场景默认是 单实例 ,可以通过scope指定多实例
单例:节约对象创建的时间和垃圾回收时间,但是可能面临并发的危险;
所以大部分情况都是使用单例,只要注意在使用单例的时候可能造成的并发就可以了;
对象属性最好是不能更改的,或者控制其更改;
从性能上考虑的话,使用单例的配置很不错,毕竟spring默认就是使用单例,
当然你如果已经出现了并发的问题了,就需要使用prototype了
2.4属性注入(注解注入) 2.4.1.构造器注入要有对应的构造函数,并且给其进行赋值 *** 作
2.4.2.set注入需要实体类有对应的set属性
2.4.3注解注入主要有四种注解可以注册bean,每种注解可以任意使用,只是语义上有所差异:
@Component:可以用于注册所有bean
@Repository:主要用于注册dao层的bean
@Controller:主要用于注册控制层的bean
@Service:主要用于注册服务层的bean
在需要的地方,使用@Autowire 或者@Resource注入属性
Resource是按照类的名称注入的. 默认就是当前类的名字 ,也可以自行指定的别名字
Autowire是按照类型注入的,默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false , @Autowire(required=false)
如果Autowire要想使用名称注入需要 和@Qualifier 结合, 例如:
@Autowired
@Qualifier("productDao1")
那么此时 ProductDao的注解中需要有一个名称@Component("productDao1")
2.4.4. xml和注解的混合使用 , 也是开发中常见的方式 2.5多个配置文件读取方式以一个配置文件为主,在里面通过import引入后面的配置文件
2.6Bean的其他注解 2.6.1Bean的生命周期方法注解@PostConstruct 用于注解生命周期初始化方法
@PreDestroy 用于注解生命周期销毁方法
2.6.2Bean的Scope 注解
@Scope 注解作用在类层面,默认的单例模式
3.IOC的Xml和注解的写法对比 4.IOC的Xml和注解的写法优缺点: 4.1 注解写法:特点,方便开发,提高开发效率,
缺点:如果当前应用升级,此时必须查看源代码才能完成升级
4.2Xml写法:特点,类结构清晰,对于系统升级维护有优势,
缺点:需要大量的xml配置信息
4.3Xml和注解的混合写法:一般混合写法,会将bean的创建过程仍旧交给spring容器,属性的注入采用注解的写法
DemoTest
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)