Spring之IOC

来源:互联网 发布:linux route指令 编辑:程序博客网 时间:2024/05/20 07:35

  Spring是于2003 年兴起的一个轻量级的Java 开发框架。 

  Spring之IOC,控制反转,后认为  依赖注入,更为准确。


注入 有 构造器注入 与 set注入。 一般都使用后者。

    <bean id="myService" class="com.ServiceImpl">        <property name="dao" ref="myDao"/>    </bean>    <bean id="myDao" class="com.DaoImpl"/>

可以直接使用 注解,来减少xml中的bean

扫描指定包下的类

    <context:component-scan base-package="com">        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>        <context:exclude-filter type="annotation"                                expression="org.springframework.web.bind.annotation.ControllerAdvice"/>        <context:exclude-filter type="assignable" expression="com.123465.eyas.common.conf.SwaggerConfig"/>    </context:component-scan>

注解可以自动完成 set 方法

@Controller                      一般用于SpringMVC中的 Controller

@Service                           一般用于Service

@mybatisRepository      一般用于Dao进行数据的访问

@Autowired                      一般用于成员变量

@Component                   是一种通用的组件

注解还可以显示的指定其名称,作用域

 @Scope("prototype") @Service("userService") public class UserService {

如果没有显示的 指定名称,则     BeanNameGenerator会默认给该类起名,名字以类名为基础并且首字母小写

注解默认的作用域为 singleton (单例)

java 中的反射机制基础,可以帮助我们理解 依赖注入

import java.lang.reflect.Constructor;import java.lang.reflect.Method;public class TestReflect {    public static void main(String[] args) {        Class<?> c = null;        // same as    new Person().getClass().getName()  获取该类的完全限定名,就是我们在bean中配置的class        String TotalClassName = Person.class.getName();        try {            System.out.println("-----无参构造-----");            c = Class.forName(TotalClassName);            Person person = (Person) c.newInstance();            person.setName("lyle");            person.setAge(23);            System.out.println(person);            System.out.println("-----有参构造-----");            Constructor<?> con = c.getConstructor(String.class, int.class);            Person p = (Person) con.newInstance("lyle", 23);            System.out.println(p);            System.out.println("-----有参的方法调用-----");            Method m = c.getMethod("sayHi", String.class, int.class);            m.invoke(c.newInstance(), "lyle", 23);        } catch (Exception e) {            e.printStackTrace();        }    }}







 

0 0
原创粉丝点击