spring框架的四大原则
1、使用pojo进项轻量级和最小侵入式开发;
2、通过依赖注入和基于接口编程实现松耦合;
3、通过AOP和默认习惯进行声明式编程;
4、使用AOP和模板(template)减少模式化代码。
spring所有的功能和设置都是基于这四大原则。
一、依赖注入
(1)点睛
我们常说的控制反转和依赖注入在spring环境下是同一个概念,控制反转是依赖注入实现的,所谓的依赖注入指的是容器负责创建对象和维护对象间的依赖关系,而不是通过对象本身负责自己的创建和解决好自己的依赖。
依赖注入的目的主要是为了解耦,体现一种组合的概念,如果你希望你的类具备某些功能的时候,是继承自一个具有此功能的父类好呢,还是组合一个具有这样功能的类好呢?答案是不言而喻的,继承一个父类,子类将与父类耦合,组合另外一个类则使耦合度大大降低了。
spring的IoC容器负责创建bean,并通过容器将此功能的类bean注入到你需要的bean中,spring通过使用xml、java配置、groovy配置实现bean的创建和注入。
无论是xml配置、注解配置、或者java配置,都被成为怕配置元数据,所谓元数据即描述数据的数据。元数据本身不具有任何可以执行的能力,只能通过外界代码对这些数据进行解析后进行一些有意义的操作。谁陪你过容器解析这些配置元数据进行bean初始化、配置和管理依赖.
声明bean的注解
1、@Component组件 没有明确的角色;
2、@Service 在业务逻辑层(service)使用;
3、@Repository 在数据访问层(dao)使用
4、@Controller 在展现层使用
注入bean的注解 一般情况下通用
1、@Autowired :spring提供的注解;
2、@Inject :JSR-330提供的注解;
3、@Resource :JSR-250提供的注解;
这三个注解可以注解在set方法或者属性上,我习惯注解在属性上,优点是代码更少,层次更加清晰;
(2)示例:
import org.springframework.stereotype.Service;@Service
public class test0 {
public String sayHello(String word){
return "hello"+word;
}
}
}
代码解释:
1、使用@Service注解声明当前Test0类是Spring 管理的一个bean,其中使用@Component、@Service、@Repository和@Controller是等效的可以根据需要选用
使用功能类的bean
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class Test1 {
@Autowired
Test0 test0;
public String sayHello( String word){
return test0.sayHello(word);
}
}
代码解释:
1、使用@Service 注解声明当前的Text1是spring管理的一个bean
2、使用@Autowired 将Test0的实体注入到Test1中让其具有Test0的功能 此处使用JSR-330的@Inject注解和JSR-250的@Resource注解是等效的
配置类:
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("/springboot-security/src/main/java/Test0.java")
public class Test2{
}
代码解释:
1、@Configuration 声明当前类是一个配置类
2、@ComponentScan 使用此注解自动扫描名下所有使用@Service、 @Configuration、@Repository和@Controller 的类并注册为bean
运行
到此结束。