一、反射的概念
1.反射的概念
反射就是在运行期间动态的获取的类的基本信息(类的属性,构造方法,普通方法)动态的调用对象的发现,极大地提高了java代码的灵活性
2.反射的三种创建方式
获取Class的方式:
1.Class c = Class.forName(className);
2.Class c2 = Test.class;
3.Test t = new test();
Class c = t.getClass();
二、Spring 的概念
1.Spring的概念
Spring是一个轻量级的IoC和AOP容器框架。也是是为Java应用程序提供基础性服务的一套框架
2.Spring的作用
a.提供松耦合 解耦的使用
b.目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。
三、spring的IOC的概念
1.loc 的概念
a.IOC就是控制反转,指创建对象的控制权转移给Spring框架进行管理
b.由Spring根据配置文件去创建实例和管理各个实例之间的依赖关系,对象与对象之间松散耦合,也利于功能的复用。
c.使用java的反射机制,根据配置文件在运行时动态的去创建对象以及管理对象,并调用对象的方法的。
2.loc的注解
注解使用在类的上面
@Service("studentService")//相当于创建了一个对象
public class StudentServiceImpl implements StudentService {
}
loc的注解
@Component
@Repository(dao)
@Service(service)
@Controller(servelt)
相当于使用xml的
<bean id="student" class="org.lanqiao.entity.Student"/>
使用bean相当于创建了一个student的对象 由于id已经确定该对象的名字 所以类的名字的变化不会影响创建的对象 也就是降低了对象与对象之间的依赖关系
使用配置类
@Configurable //表明该类是一个配置类 主要是用于配置 用来代替xml
@ComponentScan({"org.lanqiao"})//加入扫描,扫描该类的注解
public class AppConfig {
/* @Bean
//等价于<bean id= class=/>
public Student student(){
return new Student();
}
@Bean
public Grade grade(){
return new Grade();
}*/
}
使用配置类 注意点 我们自己创建的类可以使用@Component来创建对象 但是jar包的我们不能使用注解的方式可以采用@Bean的方式创建对象
测试类的使用
@Test//单元测试
public void test(){
// 使用配置类
AnnotationConfigApplicationContext ac = new
AnnotationConfigApplicationContext(AppConfig.class);// 使用配置类
//使用xml的 配置类和Xml二选一
ClasspathXmlApplicationContext ac = new ClasspathXmlApplicationContext("beans.xml");
//使用getBean创建一个 studentService的对象
StudentService studentService = (StudentService) ac.getBean("studentService");
//调用 studentService这的对象的方法
studentService.insertStudent(new Student());
}
总结
1.loc控制反转就是 创建对象的控制权交给spring框架来处理
2.创建对象的方式 xml使用<bean id="student" class="org.lanqiao.entity.Student"/>
注解使用@Component @Repository(dao) @Service(service) @Controller(servelt)
@Lazy 懒加载 只有使用到了才会加载 @Scop Singleton单例模式 prototype多例模式
3.扫描类中使用的注解 xml 使用
<context:component-scan base-package="org.lanqiao"/>
配置类使用
@ComponentScan({"org.lanqiao"})//加入扫描,扫描该类的注解
4.测试类 xml 使用
ClasspathXmlApplicationContext ac = new ClasspathXmlApplicationContext("beans.xml");
配置类使用
AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
四、Spring的DI的概念
Dl依赖注入的前提是ioc创建了对象才能使用
1.使用xml
<bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="com.MysqL.jdbc.Driver"/>
<property name="url" value="jdbc:MysqL://localhost:3306/test?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="druidDataSource"/>
<bean id="Student" class="org.lanqiao.Student">
<property name="grade" ref="Grade"/>
</bean>
使用注解
@Autowired//bytype 更具类型来注入 @Qualifier("studentService") //若类型相同加这个更据名字来注入 @Primary//优先级 类型才相同 studentDao前加这个 先会被注入 @Resource 更具名字来注入
@Value 基本值注入
2.导入属性文件@propertySource("class path:info.prop")
3.使用
@Value("${name}")
String name;