Spring之IOC

  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();
        }
    }
}







 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值