spring02

1、
//注意,如果将@Autowired方法方法上面,意思就是将对象注入到该的方法的参数
//意味着:Spring会自动根据参数的CustomerService类型匹配容器中对应的对象给它
//注意:能够使用@Autowired注解的方法是必须有参数的
@Autowired
public void setCustomerService(CustomerService customerService) {
//问题:加了@Autowired的方法在启动的时候是否执行了?
//答:如果该方法没有执行,那么this.customerService的对象从哪里来呢?
//加了@Autowired在启动项目的时候是必须自动执行的
System.out.println("-setCustomerService已经被执行-");
this.customerService = customerService;
}
2、构造器注入

/*
* 方式三 : 构造器注入
* 使用注解的IOC创建bean的情况下
* 默认bean中有什么样的构造器,spring就调用那个构造器去创建对应的bean对象
因为这个bean贴了@componment等标签,会自动调用构造器去创建对象,所以不需要在构造器上面加@Autowired
。 * 并且会给构造器的参数自动注入对应类型的对象
*
* 问题: 如果构造函数的参数类型对应的bean有多个,会抛出异常
* org.springframework.beans.factory.NoUniqueBeanDefinitionException 不是唯一的bean异常
* 解决方案: 在参数前面 使用 @Qualifier("service1") 注解
* 从多个bean 获取指定 id 对应的bean即可
*/
public CustomController(@Qualifier("service1") CustomService service) {
this.service = service;
}

3、 @Value(value="")
/**
* @Value(value="")
* 可以从Spring容器读取 .properties 配置文件内容
* value :配置文件的对应的key -->使用 ${key} 获取
* 程序运行中自动将 properties 对应key的获取出来设置给字段
*
*/

//等价 <property name="driverClassName" value="${jdbc.driverClassName}">
@Value("${jdbc.driverClassName}")
private String driverClassName;

@Value("${jdbc.url}")
private String url;

@Value("${jdbc.username}")
private String username;

@Value("${jdbc.password}")
private String password;

//@Value("${jdbc.maxActive}")
@Value("100") //开发者也手动赋值
private String maxActive;


4、注解标签
替换XML配置文件的@Configuration注解  @Configuration配置类注解,在纯注解配置中,类加了该注解,就意味着该类是Spring的配置类。该类的功能就是用于替代原来的XML配置文件。 作用:         用于指定当前类是一个spring配置类,当创建容器时会从该类上加载注解。获取容器时需要使用AnnotationConfigApplicationContext(有@Configuration注解的类.class)。 
@ComponentScan注解  @ComponentScan注解扫描类,作用就是配置扫描Spring组件类的路径。功能等同原来配置文件的--作用:         用于指定spring在初始化容器时要扫描的包。作用和在spring的xml配置文件中的:<context:component-scan base-package="cn.zj.spring"/>是一样的。--属性:         basePackages:用于指定要扫描的包。和该注解中的value属性作用一样。 
@PropertySource注解  作用:         用于加载.properties文件中的配置。例如我们配置数据源时,可以把连接数据库的信息写到properties配置文件中,就可以使用此注解指定properties配置文件的位置。属性:         value[]:用于指定properties文件位置。如果是在类路径下,需要写上classpath: 
@Bean注解  作用:         该注解只能写在方法上,使用此方法创建一个对象,并且放入spring容器。它就相当于我们之前在xml配置中介绍的<bean标签> 属性:         name:给当前@Bean注解方法创建的对象指定一个名称(即bean的id)。 
@Import注解  作用:         用于导入其他配置类,在引入其他配置类时,可以不用再写@Configuration注解。当然,写上也没问题。<import >属性:         value[]:用于指定其他配置类的字节码。 


5、
@RunWith注解
表示先启动Spring容器,把junit运行在Spring容器中
@ContextConfiguration注解
从哪里加载资源文件,默认从src(源目录)下面加载

案例代码
package cn.zj.spring.test; import static org.junit.Assert.*; import javax.annotation.Resource;import javax.swing.Spring; import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.context.ApplicationContext;import org.springframework.context.annotation.AnnotationConfigApplicationContext;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import cn.zj.spring.config.SpringConfig;import cn.zj.spring.service.CustomerService; //表示先启动Spring容器,把junit运行在Spring容器中@RunWith(SpringJUnit4ClassRunner.class)//表示从哪里加载资源文件,默认从src(源目录)下面加载@ContextConfiguration("classpath:applicationContext.xml")public class CustomerServiceTest {       @Resource    ApplicationContext context;       @Test    public void testSpring() throws Exception {         //1.获取Spring容器对象         //AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(“applicationContext.xml”);                         //2.获取CustomerController对象         CustomerService controller = context.getBean("customerService",CustomerService.class);                 //执行保存方法         controller.save();    }} 

6、
1. Spring测试-(理解)
(1) 为了更方便的开发Spring程序
2. SpringJDBC-(理解)
(1) 优点 :主要能够让Spring自动控制事务(连接池管理连接对象,mybatis手动提交事物) !!!!
(2) JdbcTemplate 模板类 进行数据表的增删改查
(3) JdbcDaoSupport
① 优点: 将jdbcTemplate模板类的创建进行封装
② 缺点:只能在xml配置对应DAO类

10.

1、注解配置IOC (控制反正,将对象的创建权交给Spring)-重点
(1) @Component 通用IOC 组件,试用任意Spring对象管理
(2) @Controller 主要在表现层使用
(3) @Service 业务层使用
(4) @Repository DAO层使用
(5) 必须在xml中配置包扫描的位置
(6) <context:component-scan base-package=”cn.zj.spring”>
2、 Spring纯注解配置-重点
(1) 纯注解配置替代xml配置,但是所有配置依然存在,只是配置方式变换成在类上面贴注解的形式(未来的趋势)--SpringBoot(纯注解)

原文地址:https://www.cnblogs.com/dxwen/p/11177875.html