注意点
- @Component是一个基本注解,一个受spring管理组件,如果@Repository,@Controller,@Service,三个注解都没有给value命名(—不给值@Controller,给值得为@Controller(“UserController”)—)那么,必须要有@Component注解例如:
没有@Component就无法进行识别
Component层
package com.wenhe.annotation;
import org.springframework.stereotype.Component;
@Component
public class TestObject {
}
Controller层
package com.wenhe.controller;
import org.springframework.stereotype.Controller;
@Controller
public class UserController {
public void execute(){
System.out.println("UserController execute...");
}
}
service层
package com.wenhe.service;
import org.springframework.stereotype.Service;
@Service
public class UserService {
public void add(){
System.out.println("userservice add....");
}
}
@Repository层Dao
package com.wenhe.dao;
import org.springframework.stereotype.Repository;
@Repository("UserRspository")
public class UserRspositoryImpl implements UserRspository {
@Override
public void save() {
System.out.println("UserRspositoryImpl save(111");
}
}
测试结果:
.getBean(“userController”);中的命名必须是该类的首字母小写其他 不变,如下:
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationcontext.xml");
TestObject to = (TestObject)ctx.getBean("testObject");
System.out.println(to);
UserController usercontroller = (UserController)ctx.getBean("userController");
System.out.println(usercontroller);
UserService userService = (UserService)ctx.getBean("userService");
System.out.println(userService);
UserRspositoryImpl UserRspository = (UserRspositoryImpl)ctx.getBean("userRspositoryImpl");
System.out.println(UserRspository);
不需要@Component的则如下:
- 需要每一层的注解都要给定命名
Service
package com.wenhe.service;
import org.springframework.stereotype.Service;
@Service("UserService")//要自定义命名
public class UserService {
public void add(){
System.out.println("userservice add....");
}
}
Controller
package com.wenhe.controller;
import org.springframework.stereotype.Controller;
@Controller("UserController")
public class UserController {
public void execute(){
System.out.println("UserController execute...");
}
}
Repository
package com.wenhe.dao;
import org.springframework.stereotype.Repository;
@Repository("UserRspository")
public class UserRspositoryImpl implements UserRspository {
@Override
public void save() {
System.out.println("UserRspositoryImpl save(111");
}
}
.getBean(“UserController”);必须为自己定义的名
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationcontext.xml");
UserController usercontroller = (UserController)ctx.getBean("UserController");
System.out.println(usercontroller);
UserService userService = (UserService)ctx.getBean("UserService");
System.out.println(userService);
UserRspositoryImpl UserRspository = (UserRspositoryImpl)ctx.getBean("UserRspository");
System.out.println(UserRspository);