public class MResource implements ApplicationContextAware{
  private ApplicationContext applicationContext;
 @Override
 public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
 this.applicationContext = applicationContext;
 }
 public void resource(){
  Resource resource = applicationContext.getResource(\"classpath:config.txt\");
  System.out.println(resource.getFilename());
 }
}
// 单元测试类
import com.test. .UnitTest ;
@RunWith(BlockJUnit4ClassRunner.class)
public class TestResource extends UnitTest  {
 public TestResource() {
  super(\"classpath:spring-resource. \");
 }
 @Test
 public void testResource() {
  MResource resource = super.getBean(\"mResource\");
  try{
   resource.resource();
  }catch(IOException e){
   e.printStackTrace();
  }
 }
}
<?  version=\"1.0\" encoding=\"UTF-8\"?>
<beans  ns=\"http://www.spring work.org/schema/beans\"
  ns:xsi=\"http://www.w3.org/2001/ Schema-instance\"
 xsi:schemaLocation=\"http://www.spring work.org/schema/beans
 http://www.spring work.org/schema/beans/spring-beans.xsd\">
 <bean id=\"moocResource\" class=\"com.resource.MResource\"></bean>
</beans>

bean的定义与学习:

<context:annotation-config/>
@Component,@Repository,@Service,@Controller
@Required,@Autowired,@Qualifier,@Resource
@Configuration,@Bean,@Import,@DependsOn
@Component,@Repository,@Service,@Controller
  1. @Repository用于注解DAO类为持久层
  2. @Service用于注解Service类为服务层
  3. @Controller用于Controller类为控制层

元注解 -annotationsspring提供的注解可以作为字节的代码叫元数据注解,处理value(),元注解可以有其他的属性.

spring可以自动检测和注册bean

@Service
public class SimpleMovieLister {
 private MovieFinder movieFinder;
 @Autowired
 public SimpleMovieLister(MovieFinder movieFinder){
  this.movieFinder = movieFinder;
 }
}
@Repository
public class JpaMovieFinder implements MovieFinder {

}

类的自动检测以及Bean的注册

<?  version=\"1.0\" encoding=\"UTF-8\"?>
<beans  ns=\"http://www.spring work.org/schema/beans\"
  ns:xsi=\"http://www.w3.org/2001/ Schema-instance\"
 xsi:schemaLocation=\"http://www.spring work.org/schema/beans
 http://www.spring work.org/schema/beans/spring-beans.xsd\">
 <context:component-scan  -package=\"org.example\"/>
</beans>

类被自动发现并注册bean的条件:

用@Component,@Repository,@Service,@Controller注解或者使用@Component的自定义注解

@Required用于bean属性的setter方法
@Autowired注解

private MovieFinder movieFinder;
@Autowired
public void setMovieFinder(MovieFinder movieFinder) {
 this.movieFinder = movieFinder;
}
用于构造器或成员变量
@Autowired
private MovieCatalog movieCatalog;
private CustomePreferenceDap customerPreferenceDao;
@Autowired
public MovieRecommender(CustomerPreferenceDao customerPreferenceDao) {
 this.customerPreferenceDao = customerPreferenceDao;
}

@Autowired注解

使用这个注解,如果找不到bean将会导致抛出异常,可以使用下面代码避免,每个类只能有一个构造器被标记为required=true.

public class SimpleMovieLister {
 private MovieFinder movieFinder;
 @Autowired(required=false)
 public void setMovieFinder(MovieFinder movieFinder){
  this.movieFinder = movieFinder;
 }
}

spring是一个开源框架,spring是用j2ee开发的mvc框架,spring boot呢就是一个能整合组件的快速开发框架,因为使用maven管理,所以很便利。至于spring cloud,就是微服务框架了。

spring是一个轻量级的Java开发框架,是为了解决企业应用开发的复杂性而创建的框架,框架具有分层架构的优势.

spring这种框架是简单性的,可测试性的和松耦合的,spring框架,我们主要是学习控制反转IOC和面向切面AOP.

// 知识点
spring ioc
spring aop
spring orm
spring mvc
spring webservice
spring transactions
spring jms
spring data
spring cache
spring boot
spring security
spring schedule

spring ioc为控制反转,控制反向,控制倒置,

\"效果\"

\"效果\"

\"效果\"

Spring容器是 Spring 框架的核心。spring容器实现了相互依赖对象的创建,协调工作,对象只要关系业务逻辑本身,IOC最重要的是完成了对象的创建和依赖的管理注入等,控制反转就是将代码里面需要实现的对象创建,依赖的代码,反转给了容器,这就需要创建一个容器,用来让容器知道创建对象与对象的关系.(告诉spring你是个什么东西,你需要什么东西)

 ,properties等用来描述对象与对象间的关系
classpath,filesystem,servletContext等用来描述对象关系的文件放在哪里了.

 

收藏 打印